diff --git a/previews/PR1200/.documenter-siteinfo.json b/previews/PR1200/.documenter-siteinfo.json new file mode 100644 index 0000000000..f548f54e8d --- /dev/null +++ b/previews/PR1200/.documenter-siteinfo.json @@ -0,0 +1 @@ +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-10-07T19:33:06","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/previews/PR1200/api/citation/index.html b/previews/PR1200/api/citation/index.html new file mode 100644 index 0000000000..35fef7ab1c --- /dev/null +++ b/previews/PR1200/api/citation/index.html @@ -0,0 +1,12 @@ + +Citation · PowerSystems.jl

Citation

Users are requested to please cite the following paper:

@article{LARA2021100747,
+title = {PowerSystems.jl — A power system data management package for large scale modeling},
+journal = {SoftwareX},
+volume = {15},
+pages = {100747},
+year = {2021},
+issn = {2352-7110},
+doi = {https://doi.org/10.1016/j.softx.2021.100747},
+url = {https://www.sciencedirect.com/science/article/pii/S2352711021000765},
+author = {José Daniel Lara and Clayton Barrows and Daniel Thom and Dheepak Krishnamurthy and Duncan Callaway},
+keywords = {Power Systems, Julia, Energy},

PowerSystems has been developed as part of the Sienna platform by the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).

diff --git a/previews/PR1200/api/developer_guidelines/index.html b/previews/PR1200/api/developer_guidelines/index.html new file mode 100644 index 0000000000..238af4b985 --- /dev/null +++ b/previews/PR1200/api/developer_guidelines/index.html @@ -0,0 +1,2 @@ + +Developer Guidelines · PowerSystems.jl
diff --git a/previews/PR1200/api/enumerated_types/index.html b/previews/PR1200/api/enumerated_types/index.html new file mode 100644 index 0000000000..fba87fedf4 --- /dev/null +++ b/previews/PR1200/api/enumerated_types/index.html @@ -0,0 +1,2 @@ + +Specifying the category of... · PowerSystems.jl

Specifying the type of...

Some fields in PowerSystems.jl are specified with an option from a pre-defined list (Specified with IS.scoped_enums).

Example syntax:

set_fuel!(gen, ThermalFuels.COAL)

These predefined lists are below:

AC Buses

ACBusTypes categorize buses for modeling activities and denote which quantities are specified for load flow calculations. ACBusTypes has the options:

NameDescription
ISOLATEDDisconnected from network
PQActive and reactive power defined (load bus)
PVActive power and voltage magnitude defined (generator bus)
REFReference bus (θ = 0)
SLACKSlack bus

Prime Movers

Each generator contains a field for prime_mover::PrimeMovers, based on the options in EIA form 923. PrimeMovers has the options:

NameDescription
BAEnergy Storage, Battery
BTTurbines Used in a Binary Cycle (including those used for geothermal applications)
CACombined-Cycle – Steam Part
CCCombined-Cycle - Aggregated Plant *augmentation of EIA
CEEnergy Storage, Compressed Air
CPEnergy Storage, Concentrated Solar Power
CSCombined-Cycle Single-Shaft Combustion turbine and steam turbine share a single generator
CTCombined-Cycle Combustion Turbine Part
ESEnergy Storage, Other
FCFuel Cell
FWEnergy Storage, Flywheel
GTCombustion (Gas) Turbine (including jet engine design)
HAHydrokinetic, Axial Flow Turbine
HBHydrokinetic, Wave Buoy
HKHydrokinetic, Other
HYHydraulic Turbine (including turbines associated with delivery of water by pipeline)
ICInternal Combustion (diesel, piston, reciprocating) Engine
PSEnergy Storage, Reversible Hydraulic Turbine (Pumped Storage)
OTOther
STSteam Turbine (including nuclear, geothermal and solar steam; does not include combined-cycle turbine)
PVePhotovoltaic (Note: renaming from EIA PV to PVe to avoid conflict with ACBusType.PV)
WTWind Turbine, Onshore
WSWind Turbine, Offshore

Fuels for Thermal Generators

Each ThermalGen generator has a field for fuel::ThermalFuels where ThermalFuels are intended to reflect the options in the Aggregated Fuel Codes from the EIA Annual Energy Review. ThermalFuels has the options:

NameEIA Fuel CodeDescription
COALCOLAnthracite Coal and Bituminous Coal
WASTE_COALWOCWaste/Other Coal (includes anthracite culm, gob, fine coal, lignite waste, waste coal)
DISTILLATE_FUEL_OILDFODistillate Fuel Oil (Diesel, No. 1, No. 2, and No. 4)
WASTE_OILWOOWaste Oil Kerosene and JetFuel Butane, Propane
PETROLEUM_COKEPCPetroleum Coke
RESIDUAL_FUEL_OILRFOResidual Fuel Oil (No. 5, No. 6 Fuel Oils, and Bunker Oil)
NATURAL_GASNGNatural Gas
OTHER_GASOOGOther Gas and blast furnace gas
NUCLEARNUCNuclear Fission (Uranium, Plutonium, Thorium)
AG_BIPRODUCTORWAgricultural Crop Byproducts/Straw/Energy Crops
MUNICIPAL_WASTEMLGMunicipal Solid Waste – Biogenic component
WOOD_WASTEWWWWood Waste Liquids excluding Black Liquor (BLQ) (Includes red liquor, sludge wood, spent sulfite liquor, and other wood-based liquids)
GEOTHERMALGEOGeothermal
OTHEROTHOther

Energy Storage

StorageTech defines the storage technology used in an energy Storage system, based on the options in EIA form 923. StorageTech has the options:

NameDescription
PTESPumped thermal energy storage
LIBLiON Battery
LABLead Acid Battery
FLWBRedox Flow Battery
SIBSodium Ion Battery
ZIBZinc Ion Battery
HGSHydrogen Gas Storage
LAESLiquid Air Storage
OTHER_CHEMOther Chemical Storage
OTHER_MECHOther Mechanical Storage
OTHER_THERMOther Thermal Storage

Dynamic States

StateTypes are used to denote the type of dynamic equation a specific state is subject to in PowerSimulationsDynamics.jl. StateTypes has the options:

NameDescription
DifferentialState evolves over time via a differential equation $\dot{x} = f(x)$
AlgebraicState evolves over time by satisfying an algebraic equation $0 = g(x)$
HybridDepending on specific parameters, the state can be Differential or Algebraic

Angle Units

AngleUnits can be specified in:

Name
DEGREES
RADIANS
diff --git a/previews/PR1200/api/glossary/index.html b/previews/PR1200/api/glossary/index.html new file mode 100644 index 0000000000..ca71e61829 --- /dev/null +++ b/previews/PR1200/api/glossary/index.html @@ -0,0 +1,2 @@ + +Glossary and Acronyms · PowerSystems.jl

Glossary and Acronyms

A | D | E | F | H | I | O | P | R | S | V | W | Z

A

  • AC: Alternating current

  • ACE: Area control error

  • AGC: Automatic generation control

  • AVR: Automatic Voltage Regulator

D

  • DC: Direct current

  • DERA1:

  • Dynamic: Refers to data and simulations for power system transient simulations using differential equations. Common examples include signal stability analysis to verify the power system will maintain stability in the few seconds following an unexpected fault or generator trip. For contrast, see the definition for Static data.

E

  • EMF: Electromotive force
  • ESAC: IEEE Type AC Excitation System model
  • ESDC: IEEE Type DC Excitation System model
  • EXAC: IEEE Type AC Excitation System (modified) model
  • EXPIC: Proportional/Integral Excitation System from PSS/E
  • EXST: IEEE Type ST (Static) Excitation System model
  • EX4VSA: IEEE Excitation System for Voltage Security Assessment with Over-Excitation Limits.

F

  • Forecast: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms. See the article on Time Series Data.

  • Forecast window: Represents the forecasted value starting at a particular initial time. See the article on Time Series Data.

H

  • Horizon: Is the duration of all time steps in one forecast. As of PowerSystems.jl version 4.0, all horizons in PowerSystems.jl are represented as a Dates.Period. For instance, many Day-ahead markets will have an hourly-resolution forecast for the next day, which would have a horizon of Dates.Hour(24) or Dates.Day(1). If the forecast included the next day plus a 24-hour lookahead window, the horizon would be Dates.Hour(48) or Dates.Day(2). See the article on Time Series Data.

  • HVDC: High-voltage DC

I

  • IEEET: IEEE Type I Excitation System.

  • Injector or Injection: Injectors refer to models that represent how a generator or storage device injects power or current into the power system. Loads are negative injectors. In PowerSystems.jl, some components can accept data for both StaticInjection and DynamicInjection models for both static and dynamic modeling.

  • Interval: The period of time between forecast initial times. In PowerSystems.jl all intervals are represented using Dates.Period types. For instance, in a Day-Ahead market simulation, the interval is usually Hour(24).

  • Initial time: The first time-stamp in a forecast window. See the article on Time Series Data.

  • IPC: Interconnecting power converter

O

  • OEL: Over Excitation Limiter

P

  • PLL: Phase-locked loop

  • PSS: Power System Stabilizer

  • PSSE or PSS/E: Siemens' PSS®E Power System Simulator for Engineering

  • PPA: Power purchase agreement

  • PSI: PowerSimulations.jl

  • PSID: PowerSimulationsDynamics.jl

  • PSLF: GE Vernova's Positive Sequence Load Flow Software

  • PSY: PowerSystems.jl (this package)

  • pu or p.u.: Per-unit

R

  • REECB1: Renewable Energy Electric Controller Type B1
  • REPCA1: REPCA1: Renewable Energy Power Controller Type A1
  • Resolution: The period of time between each discrete value in a time series. All resolutions are represented using Dates.Period types. For instance, a Day-ahead market data set usually has a resolution of Hour(1), a Real-Time market data set usually has a resolution of Minute(5).

S

  • SCRX: Bus Fed or Solid Fed Static Exciter

  • SEXS: Simplified Excitation System model from PSS/E

  • SIL: Surge impedance loading

  • States: Correspond to the set of inputs, outputs or variables, that evolve dynamically in PowerSimulationsDynamics.jl, commonly via a differential-algebraic system of equations. In PowerSystems.jl, a component associated to a DynamicInjector (for example an AVR) specifies the set of states that specific component requires to be modeled accurately.

  • Static: Typically refers to steady state data or models where the power system and each of its components are assumed to be operating at a steady state equilibrium point. This includes both power flow data for a single time point simulation as well as quasi-static time series data and models, where the power system is at an equilibrium point at each time step. Static data can be used as the input to single time point power flow models and production cost models with, for example, 5-minute, 15-minute, or 1-hour Resolution. For contrast, see the definition for Dynamic data.

  • STAB: Speed Sensitive Stabilizing PSS Model

V

  • VSCDCLine: Voltage-Source Converter Direct Current Line

  • VSM: Virtual Synchronous Machine

W

  • Window: A forecast window is one forecast run that starts at one initial time and extends through the forecast horizon. Typically, a forecast data set contains multiple forecast windows, with sequential initial times. For example, a year-long data set of day-ahead forecasts contains 365 forecast windows

Z

  • ZIP load: A ZIP load model accounts for the voltage-dependency of a load and is primarily used for dynamics modeling. It includes three kinds of load: constant impedance (Z), constant current (I), and constant power (P), though many dynamics models just use the constant impedance model. StandardLoad and ExponentialLoad are both ZIP load models: StandardLoad breaks up the load into each of its three components, while ExponentialLoad expresses the load as an exponential equation.
diff --git a/previews/PR1200/api/internal/index.html b/previews/PR1200/api/internal/index.html new file mode 100644 index 0000000000..cb7961d10e --- /dev/null +++ b/previews/PR1200/api/internal/index.html @@ -0,0 +1,900 @@ + +Internals · PowerSystems.jl

Internal API

PowerSystems._pti_dtypesConstant

lookup array of data types for PTI file sections given by field_name, as enumerated by PSS/E Program Operation Manual.

source
PowerSystems.EX4VSAType
mutable struct EX4VSA <: AVR
+    Iflim::Float64
+    d::Float64
+    f::Float64
+    Spar::Float64
+    K1::Float64
+    K2::Float64
+    Oel_lim::MinMax
+    G::Float64
+    Ta::Float64
+    Tb::Float64
+    Te::Float64
+    E_lim::MinMax
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

IEEE Excitation System for Voltage Security Assesment

Arguments

  • Iflim::Float64: OEL Field current limit, validation range: (0, nothing)
  • d::Float64: OEL parameter d, validation range: (0, nothing)
  • f::Float64: OEL parameter f, validation range: (0, nothing)
  • Spar::Float64: OEL parameter Spar, validation range: (0, nothing)
  • K1::Float64: OEL delay time constant, validation range: (0, nothing)
  • K2::Float64: OEL parameter K2, validation range: (0, nothing)
  • Oel_lim::MinMax: Oel integrator limits (Oelmin, Oelmax)
  • G::Float64: AVR Exciter Gain, validation range: (0, nothing)
  • Ta::Float64: Numerator lead-lag (lag) time constant in s, validation range: (0, nothing)
  • Tb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing)
  • Te::Float64: Exciter Time Constant in s, validation range: (0, nothing)
  • E_lim::MinMax: Voltage regulator limits (regulator output) (Emin, Emax)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vll: Lead-lag internal state,
+Vex: Exciter Output, 
+oel: OEL integrator state
  • n_states::Int: (Do not modify.) The EX4VSA has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
PowerSystems.EXST1Type
mutable struct EXST1 <: AVR
+    Tr::Float64
+    Vi_lim::MinMax
+    Tc::Float64
+    Tb::Float64
+    Ka::Float64
+    Ta::Float64
+    Vr_lim::MinMax
+    Kc::Float64
+    Kf::Float64
+    Tf::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

IEEE Type ST1 Excitation System (PTI version)

Arguments

  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)
  • Vi_lim::MinMax: Voltage input limits (Vimin, Vimax)
  • Tc::Float64: Numerator lead-lag (lead) time constant in s, validation range: (0, nothing)
  • Tb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing)
  • Ka::Float64: Amplifier Gain, validation range: (0, nothing)
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vrmin, Vrmax)
  • Kc::Float64: Current field constant limiter multiplier, validation range: (0, nothing)
  • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)
  • Tf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed Terminal Voltage,
+Vrll: Lead-Lag state,
+Vr: Regulator Output, 
+Vfb: Feedback state
  • n_states::Int: (Do not modify.) The EXST1 has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
PowerSystems.PowerFlowDataNetworkMethod
PowerFlowDataNetwork(
+    file::Union{IO, String};
+    kwargs...
+) -> PowerSystems.PowerFlowDataNetwork
+

Constructs PowerFlowDataNetwork from a raw file. Currently Supports PSSE data files v30, v32 and v33

source
Base.convertMethod
convert(
+    _::Type{@NamedTuple{min::Float64, max::Float64}},
+    input::Tuple{Float64, Float64}
+) -> @NamedTuple{min::Float64, max::Float64}
+

Convert Tuple to Min Max Named Tuple

source
Base.convertMethod
convert(
+    _::Type{@NamedTuple{up::Float64, down::Float64}},
+    input::Tuple{Float64, Float64}
+) -> @NamedTuple{up::Float64, down::Float64}
+

Convert Tuple to Up Down Named Tuple

source
PowerSystems._convert_argument_types!Method
_convert_argument_types!(
+    str::AbstractString,
+    struct_args::Vector
+) -> Any
+

Convert specific parameters to types that are not Float64 for specific inverter components

source
PowerSystems._create_starbus_from_transformerMethod
_create_starbus_from_transformer(
+    pm_data::Dict,
+    transformer::Dict,
+    starbus_id::Int64
+) -> Dict{String, Any}
+
create_starbus(pm_data, transformer)

Creates a starbus from a given three-winding transformer. "sourceid" is given by `["busi", "name", "I", "J", "K", "CKT"]` where "bus_i" and "name" are the modified names for the starbus, and "I", "J", "K" and "CKT" come from the originating transformer, in the PSS(R)E transformer specification.

source
PowerSystems._float2stringMethod
_float2string(
+    v::AbstractFloat,
+    float_precision::Int64
+) -> Union{String, WeakRefStrings.PosLenString}
+

converts a float value into a string of fixed precision

sprintf would do the job but this work around is needed because sprintf cannot take format strings during runtime

source
PowerSystems._get_bus_valueMethod
_get_bus_value(
+    bus_i::Int64,
+    field::String,
+    pm_data::Dict{String, Any}
+) -> Any
+
_get_bus_value(bus_i, field, pm_data)

Returns the value of field of bus_i from the PowerModels data. Requires "bus" Dict to already be populated.

source
PowerSystems._get_line_elementsMethod
_get_line_elements(
+    line::AbstractString
+) -> Tuple{Vector{T} where T<:SubString, Union{String, SubString}}
+
_get_line_elements(line)

Internal function. Uses regular expressions to extract all separate data elements from a line of a PTI file and populate them into an Array{String}. Comments, typically indicated at the end of a line with a '/' character, are also extracted separately, and Array{Array{String}, String} is returned.

source
PowerSystems._greyMethod
_grey(s::String) -> String
+

Makes a string grey in the terminal, does not seem to work well on Windows terminals more info can be found at https://en.wikipedia.org/wiki/ANSIescapecode

source
PowerSystems._import_remaining_comps!Method
_import_remaining_comps!(
+    data_out::Dict,
+    data_in::Dict;
+    exclude
+)
+

Imports remaining top level component lists from data_in into data_out, excluding keys in exclude

source
PowerSystems._import_remaining_keys!Method
_import_remaining_keys!(
+    comp_dest::Dict,
+    comp_src::Dict;
+    exclude
+)
+

Imports remaining keys from a source component into detestation component, excluding keys in exclude

source
PowerSystems._init_bus!Method
_init_bus!(bus::Dict{String, Any}, id::Int64)
+
_init_bus!(bus, id)

Initializes a bus of id id with default values given in the PSS(R)E specification.

source
PowerSystems._instantiate_param_vector_sizeMethod
_instantiate_param_vector_size(
+    str::AbstractString,
+    param_map::Dict
+) -> Any
+

Construct appropiate vector size for components that collect parameters from more than 2 PSS/E components

source
PowerSystems._make_market_bid_curveMethod
_make_market_bid_curve(
+    data::PiecewiseStepData;
+    initial_input,
+    power_units,
+    input_at_zero
+) -> CostCurve{PiecewiseIncrementalCurve}
+

Auxiliary make market bid curve for timeseries with nothing inputs.

source
PowerSystems._merge_cost_data!Method
_merge_cost_data!(
+    data::Dict{String, Any}
+) -> Union{Nothing, Dict{String, Any}}
+

merges generator cost functions into generator data, if costs exist

source
PowerSystems._parse_dera1!Method
_parse_dera1!(
+    bus_dict,
+    componentID,
+    componentValues,
+    param_map::Dict,
+    bus_num::Int64
+)
+

Parse dictionary of data (from _parse_dyr_file) into a dictionary of DERA1. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each DERA1 indexed by its id.

source
PowerSystems._parse_dyr_componentsMethod
_parse_dyr_components(
+    dyr_file::AbstractString
+) -> Dict{Int64, Any}
+

Parse a .dyr file directly from its name by constructing its dictionary of dictionaries.

source
PowerSystems._parse_dyr_componentsMethod
_parse_dyr_components(data::Dict) -> Dict{Int64, Any}
+

Parse dictionary of dictionaries of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator and dynamic inverter components (indexed via its id).

For Generators, each dictionary indexed by id contains a vector with 5 of its components:

  • Machine
  • Shaft
  • AVR
  • TurbineGov
  • PSS

For Inverters, each dictionary indexed by id contains a vector with 7 of its components:

  • Converter
  • ActivePowerControl
  • ReactivePowerControl
  • InnerControl
  • DCSource
  • FrequencyEstimator
  • Filter
source
PowerSystems._parse_dyr_fileMethod
_parse_dyr_file(file::AbstractString) -> Dict{Int64, Dict}
+

Parse .dyr file into a dictionary indexed by bus number. Each bus number key has a dictionary indexed by component type and id.

Comments in .dyr files are not supported (beginning of lines with //).

source
PowerSystems._parse_dyr_generator_components!Method
_parse_dyr_generator_components!(
+    bus_dict::Dict,
+    componentID,
+    componentValues,
+    gen_map::Dict,
+    param_map::Dict
+)
+

Parse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator indexed by its id.

source
PowerSystems._parse_dyr_inverter_components!Method
_parse_dyr_inverter_components!(
+    bus_dict::Dict,
+    inv_dict::Dict,
+    componentID::Tuple{String, String},
+    inv_map::Dict
+)
+

Parse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic inverter indexed by its id.

source
PowerSystems._parse_elementsMethod
_parse_elements(
+    elements::Array,
+    dtypes::Array,
+    defaults::Dict,
+    section::AbstractString
+) -> Dict{String, Any}
+

This is an experimental method for parsing elements and setting defaults at the same time. It is not currently working but would reduce memory allocations if implemented correctly.

source
PowerSystems._parse_line_element!Method
_parse_line_element!(
+    data::Dict,
+    elements::Array,
+    section::AbstractString
+)
+
_parse_line_element!(data, elements, section)

Internal function. Parses a single "line" of data elements from a PTI file, as given by elements which is an array of the line, typically split at ,. Elements are parsed into data types given by section and saved into data::Dict.

source
PowerSystems._parse_pti_dataMethod
_parse_pti_data(data_io::IO) -> Dict{String, Array{Dict}}
+
_parse_pti_data(data_string, sections)

Internal function. Parse a PTI raw file into a Dict, given the data_string of the file and a list of the sections in the PTI file (typically given by default by get_pti_sections().

source
PowerSystems._populate_argsMethod
_populate_args(param_map::Vector, val) -> Vector{Any}
+

Populate arguments in a vector for each dynamic component (except Shafts). Returns a vector with the parameter values of the argument of each component.

source
PowerSystems._process_get_costMethod
_process_get_cost(
+    _::Type{T},
+    _,
+    cost,
+    transform_fn,
+    start_time::Union{Nothing, Dates.DateTime},
+    len::Union{Nothing, Int64}
+) -> TimeSeries.TimeArray
+

Helper function for cost getters.

Arguments

  • T: type/eltype we expect
  • component::Component: the component
  • cost: the data: either a single element of type T or a TimeSeriesKey
  • transform_fn: a function to apply to the elements of the time series
  • start_time: as in get_time_series
  • len: as in get_time_series
source
PowerSystems._process_set_costMethod
_process_set_cost(_, _, _, _, _::Nothing)
+

Helper function for cost setters.

Arguments

  • T1: type we expect if it's not a time series
  • T2: eltype we expect if it is a time series
  • sys::System: the system
  • component::Component: the component
  • cost: the data: either a single element of type T1 or a IS.TimeSeriesData of eltype T2
source
PowerSystems._psse2pm_branch!Method
_psse2pm_branch!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_branch!(pm_data, pti_data)

Parses PSS(R)E-style Branch data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "CKT"] in PSS(R)E Branch specification.

source
PowerSystems._psse2pm_bus!Method
_psse2pm_bus!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_bus!(pm_data, pti_data)

Parses PSS(R)E-style Bus data into a PowerModels-style Dict. "source_id" is given by ["I", "NAME"] in PSS(R)E Bus specification.

source
PowerSystems._psse2pm_dcline!Method
_psse2pm_dcline!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_dcline!(pm_data, pti_data)

Parses PSS(R)E-style Two-Terminal and VSC DC Lines data into a PowerModels compatible Dict structure by first converting them to a simple DC Line Model. For Two-Terminal DC lines, "sourceid" is given by ["IPR", "IPI", "NAME"] in the PSS(R)E Two-Terminal DC specification. For Voltage Source Converters, "sourceid" is given by ["IBUS1", "IBUS2", "NAME"], where "IBUS1" is "IBUS" of the first converter bus, and "IBUS2" is the "IBUS" of the second converter bus, in the PSS(R)E Voltage Source Converter specification.

source
PowerSystems._psse2pm_generator!Method
_psse2pm_generator!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+) -> Union{Nothing, Vector{Dict{String, Any}}}
+
_psse2pm_generator!(pm_data, pti_data)

Parses PSS(R)E-style Generator data in a PowerModels-style Dict. "source_id" is given by ["I", "ID"] in PSS(R)E Generator specification.

source
PowerSystems._psse2pm_load!Method
_psse2pm_load!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_load!(pm_data, pti_data)

Parses PSS(R)E-style Load data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"] in the PSS(R)E Load specification.

source
PowerSystems._psse2pm_shunt!Method
_psse2pm_shunt!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_shunt!(pm_data, pti_data)

Parses PSS(R)E-style Fixed and Switched Shunt data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"] for Fixed Shunts, and ["I", "SWREM"] for Switched Shunts, as given by the PSS(R)E Fixed and Switched Shunts specifications.

source
PowerSystems._psse2pm_transformer!Method
_psse2pm_transformer!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_transformer!(pm_data, pti_data)

Parses PSS(R)E-style Transformer data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "K", "CKT", "winding"], where "winding" is 0 if transformer is two-winding, and 1, 2, or 3 for three-winding, and the remaining keys are defined in the PSS(R)E Transformer specification.

source
PowerSystems._pti_to_powermodels!Method
_pti_to_powermodels!(
+    pti_data::Dict;
+    import_all,
+    validate,
+    correct_branch_rating
+) -> Dict{String, Any}
+
_pti_to_powermodels!(pti_data)

Converts PSS(R)E-style data parsed from a PTI raw file, passed by pti_data into a format suitable for use internally in PowerModels. Imports all remaining data from the PTI file if import_all is true (Default: false).

source
PowerSystems._read_data_rowMethod
_read_data_row(
+    data::PowerSystemTableData,
+    row,
+    field_infos;
+    na_to_nothing
+) -> NamedTuple
+

Reads values from dataframe row and performs necessary conversions.

source
PowerSystems._remove_pwl_cost_duplicates!Function
_remove_pwl_cost_duplicates!(id, comp, type_name) -> Bool
+_remove_pwl_cost_duplicates!(
+    id,
+    comp,
+    type_name,
+    tolerance
+) -> Bool
+

checks that each point in the a pwl function is unique, simplifies the function if duplicates appear

source
PowerSystems._simplify_pwl_cost!Function
_simplify_pwl_cost!(id, comp, type_name) -> Bool
+_simplify_pwl_cost!(id, comp, type_name, tolerance) -> Bool
+

checks the slope of each segment in a pwl function, simplifies the function if the slope changes is below a tolerance

source
PowerSystems._split_loads_shunts!Method
_split_loads_shunts!(data::Dict{String, Any})
+
_split_loads_shunts!(data)

Seperates Loads and Shunts in data under separate "load" and "shunt" keys in the PowerModels data format. Includes references to originating bus via "loadbus" and "shuntbus" keys, respectively.

source
PowerSystems._standardize_cost_terms!Method
_standardize_cost_terms!(
+    components::Dict{String},
+    comp_order::Int64,
+    cost_comp_name::String
+) -> Set{Int64}
+

ensures all polynomial costs functions have at exactly comp_order terms

source
PowerSystems._type_arrayMethod
_type_array(
+    string_array::Array{T<:AbstractString, 1}
+) -> Vector
+

Attempts to determine the type of an array of strings extracted from a matlab file

source
PowerSystems._type_valueMethod
_type_value(value_string::AbstractString) -> Any
+

Attempts to determine the type of a string extracted from a matlab file

source
PowerSystems.add_service_internal!Method
add_service_internal!(device::Device, service::Service)
+

This function add a service to the component without checking if the component and the service are attached to the same system

source
PowerSystems.adequacy_checkMethod
adequacy_check(sys::System)
+
adequacy_check(sys::System)

Checks the system for sum(generator ratings) >= sum(load ratings).

Arguments

  • sys::System: system
source
PowerSystems.bus_gen_lookupMethod
bus_gen_lookup(
+    gen_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what generators are connected to a given bus

source
PowerSystems.bus_load_lookupMethod
bus_load_lookup(
+    load_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what loads are connected to a given bus

source
PowerSystems.bus_shunt_lookupMethod
bus_shunt_lookup(
+    shunt_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what shunts are connected to a given bus

source
PowerSystems.bus_storage_lookupMethod
bus_storage_lookup(
+    storage_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what storage is connected to a given bus

source
PowerSystems.calc_branch_flow_acMethod
calc_branch_flow_ac(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild ac solution is included in the data and computes the branch flow values

source
PowerSystems.calc_branch_flow_dcMethod
calc_branch_flow_dc(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild dc solution is included in the data and computes the branch flow values

source
PowerSystems.calc_connected_componentsMethod
calc_connected_components(
+    pm_data::Dict{String};
+    edges
+) -> Set{Set{Int64}}
+

computes the connected components of the network graph returns a set of sets of bus ids, each set is a connected component

source
PowerSystems.calc_cost_pwl_linesMethod
calc_cost_pwl_lines(comp_dict::Dict) -> Dict{Any, Any}
+

compute lines in m and b from from pwl cost models data is a list of components.

Can be run on data or ref data structures

source
PowerSystems.calc_power_balanceMethod
calc_power_balance(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild solution is included in the data and computes the power balance at each bus

source
PowerSystems.calculate_saturation_coefficientsMethod
calculate_saturation_coefficients(
+    E::Tuple{Float64, Float64},
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se(x) = B(x - A)^2/x for Se(E1) = B(E1 - A)^2/E1 and Se(E2) = B(E2 - A)^2/E2 and uses the negative solution of the quadratic equation

source
PowerSystems.check_component_additionMethod
check_component_addition(
+    sys::System,
+    component::Component;
+    kwargs...
+)
+

Throws ArgumentError if a PowerSystems rule blocks addition to the system.

This method is tied with handlecomponentaddition!. If the methods are re-implemented for a subtype then whatever is added in handlecomponentaddition! must be checked here.

source
PowerSystems.check_statusMethod
check_status(data::Dict{String})
+

checks that active components are not connected to inactive buses, otherwise prints warnings

source
PowerSystems.check_typeMethod
check_type(typ, value) -> Any
+

Checks if the given value is of a given type, if not tries to make it that type

source
PowerSystems.correct_network_data!Method
correct_network_data!(
+    data::Dict{String};
+    correct_branch_rating
+) -> Dict{String, Dict{Symbol, Set{Int64}}}
+

Runs various data quality checks on a PowerModels data dictionary. Applies modifications in some cases. Reports modified component ids.

source
PowerSystems.correct_transformer_parameters!Method
correct_transformer_parameters!(
+    data::Dict{String}
+) -> Set{Int64}
+

checks that each branch has a reasonable transformer parameters

this is important because setting tap == 0.0 leads to NaN computations, which are hard to debug

source
PowerSystems.correct_voltage_angle_differences!Function
correct_voltage_angle_differences!(
+    data::Dict{String}
+) -> Set{Int64}
+correct_voltage_angle_differences!(
+    data::Dict{String},
+    default_pad
+) -> Set{Int64}
+

checks that voltage angle differences are within 90 deg., if not tightens

source
PowerSystems.deactivate_isolated_components!Method
deactivate_isolated_components!(data::Dict{String}) -> Bool
+

removes buses with single branch connections and without any other attached components. Also removes connected components without suffuceint generation or loads.

also deactivates 0 valued loads and shunts.

source
PowerSystems.get_avr_saturationMethod
get_avr_saturation(
+    E::Tuple{Float64, Float64},
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients for an AVR

source
PowerSystems.get_dataframeMethod
get_dataframe(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory
+) -> DataFrames.DataFrame
+

Return the dataframe for the category.

source
PowerSystems.get_exponential_saturationMethod
get_exponential_saturation(
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se = Bx^A for Se(1.2) = B(1.2)^A and Se(1.0) = B(1.0)^A as: B = Se(1.0) and hence (1.2)^A = Se(1.2)/B -> A = log(Se(1.2)/B) / log(1.2)

source
PowerSystems.get_generator_mappingFunction
get_generator_mapping() -> Dict{NamedTuple, DataType}
+get_generator_mapping(
+    filename
+) -> Dict{NamedTuple, DataType}
+

Return a dict where keys are a tuple of input parameters (fuel, unit_type) and values are generator types.

source
PowerSystems.get_generator_typeMethod
get_generator_type(
+    fuel,
+    unit_type,
+    mappings::Dict{NamedTuple, DataType}
+) -> Union{Nothing, DataType}
+

Return the PowerSystems generator type for this fuel and unit_type.

source
PowerSystems.get_quadratic_saturationMethod
get_quadratic_saturation(
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se = B(x - A)^2/x for Se(1.2) = B(1.2 - A)^2/1.2 and Se(1.0) = B(1.0 - A)^2/1.0 as: Se(1.0) = (Se(1.2) * 1.2) /(1.2 - A)^2 * (1.0 - A)^2/1.0 that yields (1.2 - A)^2 Se(1.0) = Se(1.2) * 1.2 * (1.0 - A)^2 or expanding: (1.2 * Se(1.2) - Se(1.0)) A^2 + (2.4 Se(1.0) - 2 * 1.2 * Se(1.2)) A + (1.2 * Se(1.2) - 1.44 Se(1.0)) = 0 and uses the negative solution of the quadratic equation.

source
PowerSystems.get_series_susceptanceMethod
get_series_susceptance(
+    b::Union{PhaseShiftingTransformer, TapTransformer}
+) -> Float64
+

Returns the series susceptance of a controllable transformer following the convention in power systems to define susceptance as the inverse of the imaginary part of the impedance. In the case of phase shifter transformers the angle is ignored.

source
PowerSystems.get_user_fieldMethod
get_user_field(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory,
+    field::AbstractString
+) -> Any
+

Return the custom name stored in the user descriptor file.

Throws DataFormatError if a required value is not found in the file.

source
PowerSystems.get_user_fieldsMethod
get_user_fields(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory
+) -> Any
+

Return a vector of user-defined fields for the category.

source
PowerSystems.handle_deserialization_special_cases!Method
handle_deserialization_special_cases!(
+    component::Dict,
+    _::Type{<:Component}
+)
+

Allow types to implement handling of special cases during deserialization.

Arguments

  • component::Dict: The component serialized as a dictionary.
  • ::Type: The type of the component.
source
PowerSystems.im_replicateMethod
im_replicate(
+    sn_data::Dict{String},
+    count::Int64,
+    global_keys::Set{String}
+) -> Dict{String, Any}
+

Transforms a single network into a multinetwork with several deepcopies of the original network

source
PowerSystems.is_attachedMethod
is_attached(component::Component, sys::System) -> Bool
+

Return true if the component is attached to the system.

source
PowerSystems.isafieldMethod
isafield(component::Component, field::Symbol) -> Any
+

Checks if a PowerSystemDevice has a field or subfield name.

source
PowerSystems.iterate_rowsMethod
iterate_rows(
+    data::PowerSystemTableData,
+    category;
+    na_to_nothing
+) -> Channel{Any}
+

Return a NamedTuple of parameters from the descriptor file for each row of a dataframe, making type conversions as necessary.

Refer to the PowerSystems descriptor file for field names that will be created.

source
PowerSystems.load_csv_parser!Method
load_csv_parser!(sys::System, data::PowerSystemTableData)
+
load_csv_parser!(sys::System, data::PowerSystemTableData)

Add loads to the System from the raw load data.

source
PowerSystems.loadzone_csv_parser!Method
loadzone_csv_parser!(
+    sys::System,
+    data::PowerSystemTableData
+)
+
loadzone_csv_parser!(sys::System, data::PowerSystemTableData)

Add branches to the System from the raw data.

source
PowerSystems.make_busMethod
make_bus(bus_dict::Dict{String, Any}) -> ACBus
+

Creates a PowerSystems.ACBus from a PowerSystems bus dictionary

source
PowerSystems.make_generatorMethod
make_generator(
+    data::PowerSystemTableData,
+    gen,
+    cost_colnames,
+    bus,
+    gen_storage
+) -> Any
+

Creates a generator of any type.

source
PowerSystems.make_thermal_genMethod
make_thermal_gen(
+    gen_name::Union{SubString{String}, String},
+    d::Dict,
+    bus::ACBus,
+    sys_mbase::Float64
+) -> ThermalStandard
+

The polynomial term follows the convention that for an n-degree polynomial, at least n + 1 components are needed. c(p) = cn*p^n+...+c1p+c0 co is stored in the field in of the Econ Struct

source
PowerSystems.parse_psseMethod
parse_psse(io::IO; kwargs...) -> Dict{String, Any}
+
function parse_psse(io::IO; kwargs...)::Dict

Parses directly from iostream

source
PowerSystems.parse_psseMethod
parse_psse(filename::String; kwargs...) -> Dict{String, Any}
+
parse_psse(filename::String; kwargs...)::Dict

Parses directly from file

source
PowerSystems.parse_ptiMethod
parse_pti(io::IO) -> Dict{String, Array{Dict}}
+
parse_pti(io::IO)

Reads PTI data in io::IO, returning a Dict of the data parsed into the proper types.

source
PowerSystems.parse_ptiMethod
parse_pti(filename::String) -> Dict{String, Array{Dict}}
+
parse_pti(filename::String)

Open PTI raw file given by filename, returning a Dict of the data parsed into the proper types.

source
PowerSystems.propagate_topology_status!Method
propagate_topology_status!(
+    data::Dict{String}
+) -> Union{Nothing, Bool}
+

finds active network buses and branches that are not necessary for the computation and sets their status to off.

Works on a PowerModels data dict, so that a it can be used without a GenericPowerModel object

Warning: this implementation has quadratic complexity, in the worst case

source
PowerSystems.read_and_convert_tsFunction
read_and_convert_ts(
+    ts::TimeSeriesData,
+    component::Component
+) -> TimeSeries.TimeArray
+read_and_convert_ts(
+    ts::TimeSeriesData,
+    component::Component,
+    start_time::Union{Nothing, Dates.DateTime}
+) -> TimeSeries.TimeArray
+read_and_convert_ts(
+    ts::TimeSeriesData,
+    component::Component,
+    start_time::Union{Nothing, Dates.DateTime},
+    len::Union{Nothing, Int64}
+) -> TimeSeries.TimeArray
+read_and_convert_ts(
+    ts::TimeSeriesData,
+    component::Component,
+    start_time::Union{Nothing, Dates.DateTime},
+    len::Union{Nothing, Int64},
+    transform_fn
+) -> TimeSeries.TimeArray
+

Call gettimeseriesarray on the given time series and return a TimeArray of the results, values mapped by `transformfn` if it is not nothing

source
PowerSystems.read_gen!Method
read_gen!(
+    sys::System,
+    data::Dict,
+    bus_number_to_bus::Dict{Int64, ACBus};
+    kwargs...
+)
+

Transfer generators to ps_dict according to their classification

source
PowerSystems.replicateMethod
replicate(
+    sn_data::Dict{String},
+    count::Int64;
+    global_keys
+) -> Dict{String, Any}
+

Turns in given single network data in multinetwork data with a count replicate of the given network. Note that this function performs a deepcopy of the network data. Significant multinetwork space savings can often be achieved by building application specific methods of building multinetwork with minimal data replication.

source
PowerSystems.resolve_swithces!Method
resolve_swithces!(data::Dict{String})
+

given a network data dict merges buses that are connected by closed switches converting the dataset into a pure bus-branch model.

source
PowerSystems.simplify_network!Method
simplify_network!(data::Dict{String}) -> Bool
+

attempts to deactive components that are not needed in the network by repeated calls to propagate_topology_status! and deactivate_isolated_components!

warning: this implementation has quadratic complexity, in the worst case

source
PowerSystems.total_capacity_ratingMethod
total_capacity_rating(sys::System) -> Any
+
total_capacity_rating(sys::System)

Sum of system generator and storage ratings.

Arguments

  • sys::System: system
source
PowerSystems.total_load_ratingMethod
total_load_rating(sys::System) -> Any
+
total_load_rating(sys::System)

Checks the system for sum(generator ratings) >= sum(load ratings).

Arguments

  • sys::System: system
source
PowerSystems.update_bus_ids!Method
update_bus_ids!(
+    data::Dict{String},
+    bus_id_map::Dict{Int64, Int64};
+    injective
+)
+

given a network data dict and a mapping of current-bus-ids to new-bus-ids modifies the data dict to reflect the proposed new bus ids.

source
PowerSystems.update_data!Method
update_data!(data::Dict{String}, new_data::Dict{String})
+

recursively applies new_data to data, overwriting information

source
PowerSystems.verify_device_eligibilityMethod
verify_device_eligibility(
+    sys::System,
+    component::StaticInjection,
+    service::Service
+)
+

Validates if a device is eligible to contribute to a service.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • service::Service,: Service for which the device is eligible to contribute
source
diff --git a/previews/PR1200/api/public/index.html b/previews/PR1200/api/public/index.html new file mode 100644 index 0000000000..e685e8fc8f --- /dev/null +++ b/previews/PR1200/api/public/index.html @@ -0,0 +1,1099 @@ + +Public API · PowerSystems.jl

Public API Reference

Modeling

PowerSystems.ComponentType

Supertype for all PowerSystems components. All subtypes must include a InfrastructureSystemsInternal member. Subtypes should call InfrastructureSystemsInternal() by default, but also must provide a constructor that allows existing values to be deserialized.

source
PowerSystems.get_base_powerMethod
get_base_power(c::Component) -> Float64
+

Default behavior of a component. If there is no base_power field, assume is in the system's base power.

source
PowerSystems.set_dynamic_injector!Method
set_dynamic_injector!(
+    static_injector::StaticInjection,
+    dynamic_injector::Union{Nothing, DynamicInjection}
+)
+

Any StaticInjection struct that wants to support dynamic injectors must implement this method to set the value.

The method is only for internal uses.

source
PowerSystems.has_serviceMethod
has_service(device::Device, _::Type{T<:Service}) -> Bool
+

Return true if a service with type T is attached to the device.

source
PowerSystems.remove_service!Method
remove_service!(device::Device, service::Service)
+

Remove a service from a device.

Throws ArgumentError if the service is not attached to the device.

source
PowerSystems.RenewableGenType

Supertype for all renewable generation technologies

Requires the implementation of get_ratingand get_power_factor methods

source
PowerSystems.get_max_reactive_powerMethod
get_max_reactive_power(d::RenewableGen) -> Any
+

Return the max reactive power for the Renewable Generation calculated as the rating * sin(acos(power_factor))

source
PowerSystems.ReserveType

A reserve product to be able to respond to unexpected disturbances, such as the sudden loss of a transmission line or generator.

source
PowerSystems.ReserveDownType

A downwards reserve to decrease generation or increase load

Downwards reserves are used when total load falls below its expected level, typically due to forecast errors or contingencies. Not work

A Reserve can be specified as a ReserveDown when it is defined.

source
PowerSystems.ReserveSymmetricType

A symmetric reserve, procuring the same quantity (MW) of both upwards and downwards reserves

A symmetric reserve is a special case. ReserveUp and ReserveDown can be used individually to specify different quantities of upwards and downwards reserves, respectively.

A Reserve can be specified as a ReserveSymmetric when it is defined.

source
PowerSystems.ReserveUpType

An upwards reserve to increase generation or reduce load

Upwards reserves are used when total load exceeds its expected level, typically due to forecast errors or contingencies.

A Reserve can be specified as a ReserveUp when it is defined.

source
PowerSystems.ServiceType

Supertype for all system services

Services (or ancillary services) include additional requirements and support to ensure reliable electricity service to customers. Common services are reserve products to be able to respond quickly to unexpected disturbances, such as the sudden loss of a transmission line or generator.

source
PowerSystems.GeometricDistributionForcedOutageType

Attribute that contains information regarding forced outages where the transition probabilities are modeled with geometric distributions. The outage probabilities and recovery probabilities can be modeled as time series.

Arguments

  • time_to_recovery::Int: Time elapsed to recovery after a failure in Milliseconds.
  • outage_transition_probability::Float64: Characterizes the probability of failure (1 - p) in the geometric distribution.
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.PlannedOutageType

Attribute that contains information regarding planned outages.

Arguments

  • outage_schedule::String: String name of the time series used for the scheduled outages
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.TimeSeriesForcedOutageType

Attribute that contains the representation of the status of the component forced outage. The data can be obtained from the simulation of an stochastic process or historical information.

Arguments

  • outage_status_scenario::String: String name of the time series used for the forced outage status in the model. 1 is used represent outaged and 0 for available.
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.StaticInjectionType

Abstract type for devices that inject power or current

A static injection is a steady state injection, such as modeling the output power of a generator held constant over a five-minute period.

Many StaticInjection models can accept a DynamicInjection model as an optional add-on for conducting dynamic simulations.

source
PowerSystems.get_subsystem_componentsMethod
get_subsystem_components(
+    sys::System,
+    subsystem_name::AbstractString
+) -> Base.Generator{Set{Base.UUID}, InfrastructureSystems.var"#419#420"{InfrastructureSystems.SystemData}}
+

Return a Generator of all components in the subsystem.

Throws ArgumentError if the subsystem name is not stored.

source
PowerSystems.get_subsystemsMethod
get_subsystems(
+    sys::System
+) -> Base.KeySet{String, Dict{String, Set{Base.UUID}}}
+

Return an iterator of all subsystem names in the system.

source
PowerSystems.has_componentMethod
has_component(
+    sys::System,
+    subsystem_name::AbstractString,
+    component::Component
+) -> Bool
+

Return true if the component is in the subsystem.

source
PowerSystems.is_assigned_to_subsystemMethod
is_assigned_to_subsystem(
+    sys::System,
+    component::Component,
+    subsystem_name::AbstractString
+) -> Bool
+

Return true if the component is assigned to the subsystem.

source
PowerSystems.remove_component_from_subsystem!Method
remove_component_from_subsystem!(
+    sys::System,
+    subsystem_name::AbstractString,
+    component::Component
+)
+

Remove a component from a subsystem.

Throws ArgumentError if the subsystem name or component is not stored.

source
PowerSystems.remove_subsystem!Method
remove_subsystem!(
+    sys::System,
+    subsystem_name::AbstractString
+)
+

Remove a subsystem from the system.

Throws ArgumentError if the subsystem name is not stored.

source
PowerSystems.StaticInjectionSubsystemType

Abstract type for a subsystem that contains multiple instances of StaticInjection

Subtypes must implement:

  • get_subcomponents(subsystem::StaticInjectionSubsystem)

The subcomponents in subtypes must be attached to the System as masked components.

source
PowerSystems.copy_subcomponent_time_series!Method
copy_subcomponent_time_series!(
+    subsystem::StaticInjectionSubsystem,
+    subcomponent::Component
+)
+

Efficiently add all time series data in the subcomponent to the subsystem by copying the underlying references.

source
PowerSystems.get_dynamic_componentsMethod
get_dynamic_components(
+    device::DynamicInjection
+) -> Base.Generator{I, F} where {I<:(Base.Iterators.Filter{PowerSystems.var"#6#8", I} where I<:(Base.Iterators.Zip{Is} where Is<:Tuple{Any, Tuple})), F<:(PowerSystems.var"#5#7"{<:DynamicInjection})}
+

Return all the dynamic components of a DynamicInjection device

source
PowerSystems.get_states_typesMethod
get_states_types(d::DynamicComponent) -> Vector{StateTypes}
+
Default implementation of get_state_types for dynamic components. Assumes all states are
+Differential
source
InfrastructureSystems.get_fuel_costMethod
get_fuel_cost(
+    component::StaticInjection;
+    start_time,
+    len
+) -> Union{Float64, TimeSeries.TimeArray}
+

Get the fuel cost of the component's variable cost, which must be a FuelCurve.

source
PowerSystems.get_decremental_initial_inputMethod
get_decremental_initial_input(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Union{Nothing, TimeSeries.TimeArray}
+

Retrieve the decremental_initial_input for a StaticInjection device with a MarketBidCost.

source
PowerSystems.get_decremental_offer_curvesMethod
get_decremental_offer_curves(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}
+

Retrieve the decremental_offer_curves for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.

source
PowerSystems.get_decremental_variable_costMethod
get_decremental_variable_cost(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Any
+

Retrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (decremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.

source
PowerSystems.get_incremental_initial_inputMethod
get_incremental_initial_input(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Union{Nothing, TimeSeries.TimeArray}
+

Retrieve the incremental_initial_input for a StaticInjection device with a MarketBidCost.

source
PowerSystems.get_incremental_offer_curvesMethod
get_incremental_offer_curves(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}
+

Retrieve the incremental_offer_curves for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.

source
PowerSystems.get_incremental_variable_costMethod
get_incremental_variable_cost(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Any
+

Retrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (incremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.

source
PowerSystems.get_no_load_costMethod
get_no_load_cost(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Any
+

Retrieve the no-load cost data for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.

source
PowerSystems.get_services_bidMethod
get_services_bid(
+    device::StaticInjection,
+    cost::MarketBidCost,
+    service::Service;
+    start_time,
+    len
+) -> TimeSeries.TimeArray
+

Return service bid time series data for a StaticInjection device with a MarketBidCost. The user may specify start_time and len and the function returns a TimeArray of CostCurves.

source
PowerSystems.get_start_upMethod
get_start_up(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeries.TimeArray}
+

Retrieve the startup cost data for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64.

source
PowerSystems.get_variable_costMethod
get_variable_cost(
+    service::ReserveDemandCurve;
+    start_time,
+    len
+) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}
+

Retrieve the variable cost data for a ReserveDemandCurve. The user may specify start_time and len and the function returns a TimeArray of CostCurves.

source
PowerSystems.get_variable_costMethod
get_variable_cost(
+    device::StaticInjection,
+    cost::MarketBidCost;
+    start_time,
+    len
+) -> Any
+

Retrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (incremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.

source
PowerSystems.set_decremental_initial_input!Method
set_decremental_initial_input!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Float64, TimeSeriesData}
+) -> TimeSeriesKey
+

Set the decremental_initial_input for a StaticInjection device with a MarketBidCost to either a scalar or a time series.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.
source
PowerSystems.set_decremental_variable_cost!Method
set_decremental_variable_cost!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},
+    power_units::UnitSystem
+)
+

Set the decremental variable cost bid for a StaticInjection device with a MarketBidCost.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.
  • power_units::UnitSystem: Units to be used for data.
source
PowerSystems.set_fuel_cost!Method
set_fuel_cost!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Float64, TimeSeriesData}
+) -> Any
+

Set the fuel cost of the component's variable cost, which must be a FuelCurve.

source
PowerSystems.set_incremental_initial_input!Method
set_incremental_initial_input!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Float64, TimeSeriesData}
+) -> TimeSeriesKey
+

Set the incremental_initial_input for a StaticInjection device with a MarketBidCost to either a scalar or a time series.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.
source
PowerSystems.set_incremental_variable_cost!Method
set_incremental_variable_cost!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},
+    power_units::UnitSystem
+)
+

Set the incremental variable cost bid for a StaticInjection device with a MarketBidCost.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.
  • power_units::UnitSystem: Units to be used for data.
source
PowerSystems.set_no_load_cost!Method
set_no_load_cost!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Float64, TimeSeriesData}
+) -> Union{Float64, TimeSeriesKey}
+

Set the no-load cost for a StaticInjection device with a MarketBidCost to either a scalar or a time series.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.
source
PowerSystems.set_service_bid!Method
set_service_bid!(
+    sys::System,
+    component::StaticInjection,
+    service::Service,
+    time_series_data::TimeSeriesData,
+    power_units::UnitSystem
+)
+

Adds service bids time-series data to the MarketBidCost.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • service::Service,: Service for which the device is eligible to contribute
  • time_series_data::IS.TimeSeriesData: TimeSeriesData
source
PowerSystems.set_start_up!Method
set_start_up!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesData}
+) -> Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}
+

Set the startup cost for a StaticInjection device with a MarketBidCost to either a single StartUpStages or a time series.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{StartUpStages, IS.TimeSeriesData},: the data. If a time series, must be of eltype NTuple{3, Float64}.
source
PowerSystems.set_variable_cost!Method
set_variable_cost!(
+    _::System,
+    component::ReserveDemandCurve,
+    data::CostCurve{PiecewiseIncrementalCurve}
+) -> CostCurve{PiecewiseIncrementalCurve}
+

Adds fixed energy market bids to the ReserveDemandCurve.

Arguments

  • sys::System: PowerSystem System
  • component::ReserveDemandCurve: the curve
  • `timeseriesdata::CostCurve{PiecewiseIncrementalCurve}
source
PowerSystems.set_variable_cost!Method
set_variable_cost!(
+    sys::System,
+    component::ReserveDemandCurve,
+    data::Union{Nothing, TimeSeriesData}
+) -> TimeSeriesKey
+

Adds energy market bids time-series to the ReserveDemandCurve.

Arguments

  • sys::System: PowerSystem System
  • component::ReserveDemandCurve: the curve
  • time_series_data::IS.TimeSeriesData: TimeSeriesData
source
PowerSystems.set_variable_cost!Method
set_variable_cost!(
+    sys::System,
+    component::StaticInjection,
+    data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},
+    power_units::UnitSystem
+)
+

Set the incremental variable cost bid for a StaticInjection device with a MarketBidCost.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.
  • power_units::UnitSystem: Units to be used for data. Must be NATURAL_UNITS.
source

Operating Costs

InfrastructureSystems.CostCurveType
struct CostCurve{T<:ValueCurve} <: ProductionVariableCostCurve{T<:ValueCurve}
  • value_curve::ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve

CostCurve(value_curve, power_units, vom_cost)
+CostCurve(; value_curve, power_units, vom_cost)

Direct representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.FuelCurveType
struct FuelCurve{T<:ValueCurve} <: ProductionVariableCostCurve{T<:ValueCurve}
  • value_curve::ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • fuel_cost::Union{Float64, TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve

FuelCurve(value_curve, power_units, fuel_cost, vom_cost)
+FuelCurve(value_curve, fuel_cost)
+FuelCurve(value_curve, fuel_cost, vom_cost)
+FuelCurve(value_curve, power_units, fuel_cost)
+FuelCurve(; value_curve, power_units, fuel_cost, vom_cost)

Representation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.get_initial_inputMethod
get_initial_input(
+    cost::ProductionVariableCostCurve
+) -> Union{Nothing, Float64}
+

Get the initial_input field of this ProductionVariableCostCurve's ValueCurve (not defined for input-output data)

source
InfrastructureSystems.LinearCurveType
LinearCurve(proportional_term::Float64)
+LinearCurve(proportional_term::Float64, constant_term::Float64)

A linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.

Arguments

  • proportional_term::Float64: marginal rate
  • constant_term::Float64: optional, cost at zero production, defaults to 0.0
source
InfrastructureSystems.PiecewiseAverageCurveType
PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by average rates between production points. May have nonzero initial value.

Arguments

  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewiseIncrementalCurveType
PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})
+PiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.

Arguments

  • input_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve
  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewisePointCurveType
PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})

A piecewise linear curve specified by cost values at production points.

Arguments

  • points::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs
source
InfrastructureSystems.QuadraticCurveType
QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)

A quadratic input-output curve, may have nonzero no-load cost.

Arguments

  • quadratic_term::Float64: quadratic term of the curve
  • proportional_term::Float64: proportional term of the curve
  • constant_term::Float64: constant term of the curve
source
InfrastructureSystems.AverageRateCurveType

An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.

source
InfrastructureSystems.IncrementalCurveType

An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.

source
InfrastructureSystems.InputOutputCurveType

An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.

source
InfrastructureSystems.get_initial_inputMethod
get_initial_input(
+    curve::Union{AverageRateCurve, IncrementalCurve}
+) -> Union{Nothing, Float64}
+

Get the initial_input field of this ValueCurve (not defined for InputOutputCurve)

source

Time Series

InfrastructureSystems.TimeSeriesDataType

Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.

source
InfrastructureSystems.DeterministicType
mutable struct Deterministic <: AbstractDeterministic
+    name::String
+    data::SortedDict
+    resolution::Dates.Period
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • data::SortedDict: timestamp - scalingfactor
  • resolution::Dates.Period: forecast resolution
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    filename::AbstractString,
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    series_data::InfrastructureSystems.RawTimeSeries,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from RawTimeSeries.

source
InfrastructureSystems.DeterministicMethod
Deterministic(
+    src::Deterministic,
+    name::AbstractString;
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

Examples

resolution = Dates.Hour(1)
+data = Dict(
+    DateTime("2020-01-01T00:00:00") => ones(24),
+    DateTime("2020-01-01T01:00:00") => ones(24),
+)
+# Define a Deterministic for the first attribute
+forecast_max_active_power = Deterministic(
+    "max_active_power",
+    data,
+    resolution,
+    scaling_factor_multiplier = get_max_active_power,
+)
+add_time_series!(sys, generator, forecast_max_active_power)
+# Reuse time series for second attribute
+forecast_max_reactive_power = Deterministic(
+    forecast_max_active_power,
+    "max_reactive_power"
+    scaling_factor_multiplier = get_max_reactive_power,
+)
+add_time_series!(sys, generator, forecast_max_reactive_power)
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
+    forecast::Deterministic
+) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{Deterministic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
+

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
+    @show values(maximum(window))
+end
source
InfrastructureSystems.DeterministicSingleTimeSeriesType
mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic
+    single_time_series::SingleTimeSeries
+    initial_timestamp::Dates.DateTime
+    interval::Dates.Period
+    count::Int
+    horizon::Int
+end

A deterministic forecast that wraps a SingleTimeSeries

DeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts.

Can be used as a perfect forecast based on historical data when real forecast data is unavailable.

Arguments

  • single_time_series::SingleTimeSeries: wrapped SingleTimeSeries object
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • horizon::Int: length of this time series
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
+    forecast::DeterministicSingleTimeSeries
+) -> Any
+

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
+    @show values(maximum(window))
+end
source
InfrastructureSystems.ProbabilisticType
mutable struct Probabilistic <: Forecast
+    name::String
+    resolution::Dates.Period
+    percentiles::Vector{Float64}
+    data::SortedDict
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    input_data::AbstractDict,
+    percentiles::Vector,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Probabilistic from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},
+    percentiles::Vector{Float64};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Probabilistic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    series_data::InfrastructureSystems.RawTimeSeries,
+    percentiles::Vector,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Deterministic from RawTimeSeries.

source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    src::Probabilistic,
+    name::AbstractString;
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct a Probabilistic that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
+    forecast::Probabilistic
+) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{Probabilistic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
+

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
+    @show values(maximum(window))
+end
source
InfrastructureSystems.ScenariosType
mutable struct Scenarios <: Forecast
+    name::String
+    resolution::Dates.Period
+    scenario_count::Int64
+    data::SortedDict
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • scenario_count::Int64: Number of scenarios
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+    name::AbstractString,
+    input_data::AbstractDict,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Scenarios
+

Construct Scenarios from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Scenarios
+

Construct Scenarios from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+    src::Scenarios,
+    name::AbstractString;
+    scaling_factor_multiplier
+) -> Scenarios
+

Construct Scenarios that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
+    forecast::Scenarios
+) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{Scenarios}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
+

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
+    @show values(maximum(window))
+end
source
InfrastructureSystems.SingleTimeSeriesType
mutable struct SingleTimeSeries <: StaticTimeSeries
+    name::String
+    data::TimeSeries.TimeArray
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A single column of time series data for a particular data field in a Component.

In contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).

Arguments

  • name::String: user-defined name
  • data::TimeSeries.TimeArray: timestamp - scalingfactor
  • resolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::AbstractString,
+    filename::AbstractString,
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> SingleTimeSeries
+

Construct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • resolution::Dates.Period: resolution of the time series
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::AbstractString,
+    data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier,
+    timestamp
+) -> SingleTimeSeries
+

Construct SingleTimeSeries from a TimeArray or DataFrame.

Arguments

  • name::AbstractString: user-defined name
  • data::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    src::SingleTimeSeries,
+    name::AbstractString;
+    scaling_factor_multiplier
+) -> SingleTimeSeries
+

Construct SingleTimeSeries that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attribtues.

source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    time_series::SingleTimeSeries,
+    data::TimeSeries.TimeArray
+) -> Any
+

Creates a new SingleTimeSeries from an existing instance and a subset of data.

source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::String,
+    resolution::Dates.Period,
+    initial_time::Dates.DateTime,
+    time_steps::Int64
+) -> SingleTimeSeries
+

Construct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.

source
InfrastructureSystems.ForecastCacheMethod

Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.

Call Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.

Arguments

  • ::Type{T}: subtype of Forecast
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: forecast name
  • start_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time
  • horizon_count::Union{Nothing, Int} = nothing: forecast horizon count
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance
source
InfrastructureSystems.StaticTimeSeriesCacheMethod

Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.

Call Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.

Arguments

  • ::Type{T}: subtype of StaticTimeSeries
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: time series name
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance
source
InfrastructureSystems.get_next_time_series_array!Method
get_next_time_series_array!(
+    cache::InfrastructureSystems.TimeSeriesCache
+) -> Any
+

Return the next TimeSeries.TimeArray.

Returns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.

Reads from storage if the data is not already in cache.

Arguments

  • cache::StaticTimeSeriesCache: cached instance

Examples

cache = ForecastCache(Deterministic, component, "max_active_power")
+window1 = get_next_time_series_array!(cache)
+window2 = get_next_time_series_array!(cache)
source
InfrastructureSystems.copy_time_series!Method
copy_time_series!(
+    dst::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    src::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute};
+    name_mapping,
+    scaling_factor_multiplier_mapping
+)
+

Efficiently add all time_series in one component to another by copying the underlying references.

Arguments

  • dst::TimeSeriesOwners: Destination owner
  • src::TimeSeriesOwners: Source owner
  • name_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.
  • scaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.
source
InfrastructureSystems.get_time_seriesFunction
get_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    key::TimeSeriesKey
+) -> Any
+get_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    key::TimeSeriesKey,
+    start_time::Union{Nothing, Dates.DateTime}
+) -> Any
+get_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    key::TimeSeriesKey,
+    start_time::Union{Nothing, Dates.DateTime},
+    len::Union{Nothing, Int64}
+) -> Any
+get_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    key::TimeSeriesKey,
+    start_time::Union{Nothing, Dates.DateTime},
+    len::Union{Nothing, Int64},
+    count::Union{Nothing, Int64}
+) -> Any
+

Return the exact stored data in a time series, using a time series key look up

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • key::TimeSeriesKey: the time series' key
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series by name

source
InfrastructureSystems.get_time_seriesMethod
get_time_series(
+    ::Type{T<:TimeSeriesData},
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    name::AbstractString;
+    start_time,
+    len,
+    count,
+    features...
+) -> Any
+

Return the exact stored data in a time series

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • ::Type{T}: Concrete subtype of TimeSeriesData to return
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series by key

source
InfrastructureSystems.get_time_series_arrayFunction
get_time_series_array(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries;
+    ...
+) -> Any
+get_time_series_array(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return a TimeSeries.TimeArray from a cached StaticTimeSeries instance.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    forecast::Forecast,
+    start_time::Dates.DateTime;
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return a TimeSeries.TimeArray for one forecast window from a cached Forecast instance

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+    ::Type{T<:TimeSeriesData},
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    name::AbstractString;
+    start_time,
+    len,
+    ignore_scaling_factors,
+    features...
+) -> Any
+

Return a TimeSeries.TimeArray from storage for the given time series parameters.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute};
+    ...
+) -> Union{Tuple{}, Channel{Any}}
+get_time_series_multiple(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    filter_func;
+    type,
+    name
+) -> Union{Tuple{}, Channel{Any}}
+

Returns an iterator of TimeSeriesData instances attached to the component or attribute.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • owner::TimeSeriesOwners: component or attribute from which to get time_series
  • filter_func = nothing: Only return time_series for which this returns true.
  • type = nothing: Only return time_series with this type.
  • name = nothing: Only return time_series matching this value.

See also: get_time_series_multiple from a System

source
InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    forecast::Forecast;
+    ...
+)
+get_time_series_timestamps(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    forecast::Forecast,
+    start_time::Union{Nothing, Dates.DateTime};
+    len
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.

See also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries;
+    ...
+) -> Vector{D} where D<:Dates.TimeType
+get_time_series_timestamps(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from a cached StaticTimeSeries instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length

See also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_timestampsMethod
get_time_series_timestamps(
+    ::Type{T<:TimeSeriesData},
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    name::AbstractString;
+    start_time,
+    len,
+    features...
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from storage for the given time series parameters.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_valuesFunction
get_time_series_values(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries;
+    ...
+) -> Any
+get_time_series_values(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return an vector of timeseries data without timestamps from a cached StaticTimeSeries instance

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    forecast::Forecast,
+    start_time::Dates.DateTime;
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+    ::Type{T<:TimeSeriesData},
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    name::AbstractString;
+    start_time,
+    len,
+    ignore_scaling_factors,
+    features...
+) -> Any
+

Return an vector of timeseries data without timestamps from storage

If the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.

Arguments

  • ::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache

source
InfrastructureSystems.has_time_seriesMethod
has_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}
+) -> Any
+

Return true if the component or supplemental attribute has time series data.

source
InfrastructureSystems.has_time_seriesMethod
has_time_series(
+    val::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},
+    _::Type{T<:TimeSeriesData}
+) -> Any
+

Return true if the component or supplemental attribute has time series data of type T.

source
InfrastructureSystems.TimeSeriesAssociationType

Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.

Examples

association1 = TimeSeriesAssociation(component, time_series)
+association2 = TimeSeriesAssociation(component, time_series, scenario = "high")
source
InfrastructureSystems.CompressionSettingsType
CompressionSettings(enabled, type, level, shuffle)

Provides customization of HDF5 compression settings.

  • enabled::Bool: Controls whether compression is enabled.

  • type::CompressionTypes: Specifies the type of compression to use.

  • level::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.

  • shuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.

Refer to the HDF5.jl and HDF5 documentation for more details on the options.

Example

settings = CompressionSettings(
+    enabled = true,
+    type = CompressionTypes.DEFLATE,  # BLOSC is also supported
+    level = 3,
+    shuffle = true,
+)
source
InfrastructureSystems.show_time_seriesMethod
show_time_series(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}
+)
+

Show a table with time series data attached to the component.

source

System

PowerSystems.SystemType

A power system

System is the main data container in PowerSystems.jl, including basic metadata (base power, frequency), components (network topology, loads, generators, and services), and time series data.

System(base_power)
+System(base_power, buses, components...)
+System(base_power, buses, generators, loads, branches, storage, services; kwargs...)
+System(base_power, buses, generators, loads; kwargs...)
+System(file; kwargs...)
+System(; buses, generators, loads, branches, storage, base_power, services, kwargs...)
+System(; kwargs...)

Arguments

  • base_power::Float64: the base power value for the system
  • buses::Vector{ACBus}: an array of buses
  • components...: Each element (e.g., buses, generators, ...) must be an iterable containing subtypes of Component.

Keyword arguments

  • ext::Dict: Contains user-defined parameters. Should only contain standard types.
  • frequency::Float64: (default = 60.0) Operating frequency (Hz)
  • runchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.
  • time_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.
  • time_series_directory::Union{Nothing, String}: Directory for the time series HDF5 file. Defaults to the tmp file system
  • enable_compression::Bool=false: Enable compression of time series data in HDF5.
  • compression::CompressionSettings: Allows customization of HDF5 compression settings.
  • config_path::String: specify path to validation config file
  • unit_system::String: (Default = "SYSTEM_BASE") Set the unit system for per-unitization while getting and setting data ("SYSTEM_BASE", "DEVICE_BASE", or "NATURAL_UNITS")

By default, time series data is stored in an HDF5 file in the tmp file system to prevent large datasets from overwhelming system memory (see Data Storage). If the system's time series data will be larger than the amount of tmp space available, use the time_series_directory parameter to change its location. You can also override the location by setting the environment variable SIENNA_TIME_SERIES_DIRECTORY to another directory.

HDF5 compression is not enabled by default, but you can enable it with enable_compression to get significant storage savings at the cost of CPU time. CompressionSettings can be used to customize the HDF5 compression.

If you know that your dataset will fit in your computer's memory, then you can increase performance by storing it in memory with time_series_in_memory.

Examples

sys = System(100.0; enable_compression = true)
+sys = System(100.0; compression = CompressionSettings(
+    enabled = true,
+    type = CompressionTypes.DEFLATE,  # BLOSC is also supported
+    level = 3,
+    shuffle = true)
+)
+sys = System(100.0; time_series_in_memory = true)
source
PowerSystems.SystemMethod
System(
+    sys_file::AbstractString,
+    dyr_file::AbstractString;
+    kwargs...
+) -> Any
+

Parse static and dynamic data directly from PSS/e text files. Automatically generates all the relationships between the available dynamic injection models and the static counterpart

Each dictionary indexed by id contains a vector with 5 of its components:

  • Machine
  • Shaft
  • AVR
  • TurbineGov
  • PSS

Files must be parsed from a .raw file (PTI data format) and a .dyr file.

Examples:

raw_file = "Example.raw"
+dyr_file = "Example.dyr"
+sys = System(raw_file, dyr_file)
source
PowerSystems.SystemMethod
System(
+    file_path::AbstractString;
+    assign_new_uuids,
+    kwargs...
+) -> Any
+

Constructs a System from a file path ending with .m, .RAW, or .json

If the file is JSON then assignnewuuids = true will generate new UUIDs for the system and all components.

source
PowerSystems.SystemMethod
System(
+    data,
+    base_power::Number;
+    internal,
+    kwargs...
+) -> System
+

Construct a System from InfrastructureSystems.SystemData

source
PowerSystems.SystemMethod
System(
+    base_power::Float64,
+    buses::Vector{ACBus},
+    components...;
+    kwargs...
+) -> System
+

System constructor when components are constructed externally.

source
PowerSystems.SystemMethod
System(
+    ::Nothing;
+    buses,
+    generators,
+    loads,
+    branches,
+    storage,
+    base_power,
+    services,
+    kwargs...
+) -> System
+

Constructs a non-functional System for demo purposes.

source
PowerSystems.SystemMethod
System(base_power::Number; kwargs...) -> System
+

Construct an empty System. Useful for building a System while parsing raw data.

source
InfrastructureSystems.from_jsonMethod
from_json(
+    io::Union{IO, String},
+    ::Type{System};
+    runchecks,
+    assign_new_uuids,
+    kwargs...
+) -> System
+

If assignnewuuids = true, generate new UUIDs for the system and all components.

Warning: time series data is not restored by this method. If that is needed, use the normal process to construct the system from a serialized JSON file instead, such as with System("sys.json").

source
InfrastructureSystems.get_supplemental_attributesMethod
get_supplemental_attributes(
+    filter_func::Function,
+    _::Type{T<:SupplementalAttribute},
+    sys::System
+) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:SupplementalAttribute, I<:(Vector)}
+

Returns an iterator of supplemental attributes. T can be concrete or abstract. Call collect on the result if an array is desired.

Examples

iter = get_supplemental_attributes(GeometricDistributionForcedOutage, sys)
+iter = get_supplemental_attributes(Outage, sys)
+iter = get_supplemental_attributes(x -> get_mean_time_to_recovery(x) ==  >= 0.5, GeometricDistributionForcedOutage, sys)
+outages = get_supplemental_attributes(GeometricDistributionForcedOutage, sys) do outage
+    get_mean_time_to_recovery(x) ==  >= 0.5
+end
+outages = collect(get_supplemental_attributes(GeometricDistributionForcedOutage, sys))

See also: iterate_supplemental_attributes

source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(sys::System; ...) -> Channel{Any}
+get_time_series_multiple(
+    sys::System,
+    filter_func;
+    type,
+    name
+) -> Channel{Any}
+

Return an iterator of time series in order of initial time.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • data::SystemData: system
  • filter_func = nothing: Only return time series for which this returns true.
  • type = nothing: Only return time series with this type.
  • name = nothing: Only return time series matching this value.

Examples

for time_series in get_time_series_multiple(sys)
+    @show time_series
+end
+
+ts = collect(get_time_series_multiple(sys; type = SingleTimeSeries))
source
InfrastructureSystems.set_name!Method
set_name!(
+    component::Component,
+    name::AbstractString
+) -> AbstractString
+

Set the name of a component.

Throws an exception if the component is attached to a system.

source
InfrastructureSystems.set_name!Method
set_name!(
+    sys::System,
+    component::Component,
+    name::AbstractString
+)
+

Set the name for a component that is attached to the system.

source
InfrastructureSystems.to_jsonMethod
to_json(
+    sys::System,
+    filename::AbstractString;
+    user_data,
+    pretty,
+    force,
+    runchecks
+)
+

Serializes a system to a JSON file and saves time series to an HDF5 file.

Arguments

  • sys::System: system
  • filename::AbstractString: filename to write

Keyword arguments

  • user_data::Union{Nothing, Dict} = nothing: optional metadata to record
  • pretty::Bool = false: whether to pretty-print the JSON
  • force::Bool = false: whether to overwrite existing files
  • check::Bool = false: whether to run system validation checks

Refer to check_component for exceptions thrown if check = true.

source
PowerSystems.add_component!Method
add_component!(
+    sys::System,
+    dyn_injector::DynamicInjection,
+    static_injector::StaticInjection;
+    kwargs...
+)
+

Add a dynamic injector to the system.

A component cannot be added to more than one System. Throws ArgumentError if the name does not match the static_injector name. Throws ArgumentError if the static_injector is not attached to the system.

All rules for the generic add_component! method also apply.

source
PowerSystems.add_component!Method
add_component!(
+    sys::System,
+    component::Component;
+    skip_validation,
+    kwargs...
+)
+

Add a component to the system.

A component cannot be added to more than one System. Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.

Examples

sys = System(100.0)
+
+# Add a single component.
+add_component!(sys, bus)
+
+# Add many at once.
+buses = [bus1, bus2, bus3]
+generators = [gen1, gen2, gen3]
+foreach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))

See also add_components!.

source
PowerSystems.add_components!Method
add_components!(sys::System, components)
+

Add many components to the system at once.

A component cannot be added to more than one System. Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.

Examples

sys = System(100.0)
+
+buses = [bus1, bus2, bus3]
+generators = [gen1, gen2, gen3]
+add_components!(sys, Iterators.flatten((buses, generators))
source
PowerSystems.add_service!Method
add_service!(device::Device, service::Service, sys::System)
+

Similar to add_service! but for Service and Device already stored in the system. Performs validation checks on the device and the system

Arguments

  • device::Device: Device
  • service::Service: Service
  • sys::System: system
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::ConstantReserveGroup,
+    contributing_services::Vector{<:Service};
+    skip_validation,
+    kwargs...
+)
+

Similar to add_component! but for ConstantReserveGroup.

Arguments

  • sys::System: system
  • service::ConstantReserveGroup: service to add
  • contributing_services: contributing services to the group
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::ConstantReserveGroup;
+    skip_validation,
+    kwargs...
+)
+

Similar to add_component! but for ConstantReserveGroup.

Arguments

  • sys::System: system
  • service::ConstantReserveGroup: service to add
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::Service,
+    contributing_devices;
+    kwargs...
+)
+

Similar to add_component! but for services.

Arguments

  • sys::System: system
  • service::Service: service to add
  • contributing_devices: Must be an iterable of type Device
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::Service,
+    contributing_device::Device;
+    kwargs...
+)
+

Similar to add_component! but for services.

Arguments

  • sys::System: system
  • service::Service: service to add
  • contributing_device::Device: Valid Device
source
PowerSystems.add_supplemental_attribute!Method
add_supplemental_attribute!(
+    sys::System,
+    component::Component,
+    attribute::SupplementalAttribute
+)
+

Add a supplemental attribute to the component. The attribute may already be attached to a different component.

source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    metadata_file::AbstractString;
+    resolution
+) -> Vector{TimeSeriesKey}
+

Add time series data from a metadata file or metadata descriptors.

Arguments

  • sys::System: system
  • metadata_file::AbstractString: metadata file for timeseries that includes an array of IS.TimeSeriesFileMetadata instances or a vector.
  • resolution::DateTime.Period=nothing: skip time series that don't match this resolution.
source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    components,
+    time_series::TimeSeriesData;
+    features...
+) -> TimeSeriesKey
+

Add the same time series data to multiple components.

This function stores a single copy of the data. Each component will store a reference to that data. This is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.

Throws ArgumentError if a component is not stored in the system.

source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    component::Component,
+    time_series::TimeSeriesData;
+    features...
+) -> TimeSeriesKey
+

Add time series data to a component.

Throws ArgumentError if the component is not stored in the system.

source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};
+    resolution
+) -> Vector{TimeSeriesKey}
+

Add time series data from a metadata file or metadata descriptors.

Arguments

  • sys::System: system
  • timeseries_metadata::Vector{IS.TimeSeriesFileMetadata}: metadata for timeseries
  • resolution::DateTime.Period=nothing: skip time series that don't match this resolution.
source
PowerSystems.bulk_add_time_series!Method
bulk_add_time_series!(
+    sys::System,
+    associations;
+    batch_size
+) -> Vector{TimeSeriesKey}
+

Add many time series in bulk

This method is advantageous when adding thousands of time series arrays because of the overhead in writing the time series to the underlying storage.

Arguments

  • sys::System: system
  • associations: Iterable of TimeSeriesAssociation instances. Using a Vector is not recommended. Pass a Generator or Iterator to avoid loading all time series data into system memory at once.
  • batch_size::Int: (Default = 100) Number of time series to add per batch.

Examples

# Assumes `read_time_series` will return data appropriate for Deterministic forecasts
+# based on the generator name and the filenames match the component and time series names.
+resolution = Dates.Hour(1)
+associations = (
+    IS.TimeSeriesAssociation(
+        gen,
+        Deterministic(
+            data = read_time_series(get_name(gen) * ".csv"),
+            name = "get_max_active_power",
+            resolution=resolution),
+    )
+    for gen in get_components(ThermalStandard, sys)
+)
+bulk_add_time_series!(sys, associations)

See also: open_time_series_store! to minimize HDF5 file handle overhead if you must add time series arrays one at a time

source
PowerSystems.check_componentMethod
check_component(sys::System, component::Component)
+

Check the values of a component.

Throws InvalidValue if any of the component's field values are outside of defined valid range or if the custom validate method for the type fails its check.

source
PowerSystems.check_time_series_consistencyMethod
check_time_series_consistency(
+    sys::System,
+    _::Type{T<:TimeSeriesData}
+) -> Union{Nothing, Tuple{Any, Any}}
+

Checks time series in the system for inconsistencies.

For SingleTimeSeries, returns a Tuple of initial_timestamp and length.

This is a no-op for subtypes of Forecast because those are already guaranteed to be consistent.

Throws InfrastructureSystems.InvalidValue if any time series is inconsistent.

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    line::Line,
+    linetype::Type{MonitoredLine};
+    kwargs...
+)
+

Converts a Line component to a MonitoredLine component and replaces the original in the system

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    line::MonitoredLine,
+    linetype::Type{Line};
+    kwargs...
+)
+

Converts a MonitoredLine component to a Line component and replaces the original in the system.

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    old_load::PowerLoad,
+    new_type::Type{StandardLoad};
+    kwargs...
+)
+

Converts a PowerLoad component to a StandardLoad component and replaces the original in the system. Does not set any fields in StandardLoad that lack a PowerLoad equivalent.

source
PowerSystems.from_subsystemMethod
from_subsystem(
+    sys::System,
+    subsystem::AbstractString;
+    runchecks
+) -> System
+

Construct a System from a subsystem of an existing system.

source
PowerSystems.get_available_componentsMethod
get_available_components(
+    _::Type{T<:Component},
+    sys::System
+) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}
+

Gets components availability. Requires type T to have the method get_available implemented.

source
PowerSystems.get_busMethod
get_bus(
+    sys::System,
+    name::AbstractString
+) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}
+

Return bus with name.

source
PowerSystems.get_busesMethod
get_buses(
+    sys::System,
+    aggregator::AggregationTopology
+) -> Vector{ACBus}
+

Return a vector of buses contained within the AggregationTopology.

source
PowerSystems.get_busesMethod
get_buses(
+    sys::System,
+    bus_numbers::Set{Int64}
+) -> Vector{ACBus}
+

Return all buses values with bus_numbers.

source
PowerSystems.get_componentMethod
get_component(
+    sys::System,
+    uuid::Base.UUID
+) -> InfrastructureSystems.InfrastructureSystemsComponent
+

Get the component by UUID.

source
PowerSystems.get_componentMethod
get_component(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}
+

Get the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.

See get_components_by_name for abstract types with non-unique names across subtypes.

Throws ArgumentError if T is not a concrete type and there is more than one component with requested name

source
PowerSystems.get_componentsMethod
get_components(
+    sys::System,
+    attribute::SupplementalAttribute
+) -> Any
+

Return a vector of components that are attached to the supplemental attribute.

source
PowerSystems.get_componentsMethod
get_components(
+    ::Type{T<:Component},
+    sys::System;
+    subsystem_name
+) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}
+

Returns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.

Examples

iter = PowerSystems.get_components(ThermalStandard, sys)
+iter = PowerSystems.get_components(Generator, sys)
+iter = PowerSystems.get_components(x -> PowerSystems.get_available(x), Generator, sys)
+thermal_gens = get_components(ThermalStandard, sys) do gen
+    get_available(gen)
+end
+generators = collect(PowerSystems.get_components(Generator, sys))
+

See also: iterate_components

source
PowerSystems.get_components_by_nameMethod
get_components_by_name(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+) -> Vector{T} where T<:InfrastructureSystems.InfrastructureSystemsComponent
+

Get the components of abstract type T with name. Note that PowerSystems enforces unique names on each concrete type but not across concrete types.

See get_component if the concrete type is known.

Throws ArgumentError if T is not an abstract type.

source
PowerSystems.get_components_in_aggregation_topologyMethod
get_components_in_aggregation_topology(
+    _::Type{T<:StaticInjection},
+    sys::System,
+    aggregator::AggregationTopology
+) -> Vector{T} where T<:StaticInjection
+

Return a vector of components with buses in the AggregationTopology.

source
PowerSystems.get_extMethod
get_ext(sys::System) -> Union{Nothing, Dict{String, Any}}
+

Return a user-modifiable dictionary to store extra information.

source
PowerSystems.get_time_series_resolutionsMethod
get_time_series_resolutions(
+    sys::System;
+    time_series_type
+) -> Any
+

Return a sorted Vector of distinct resolutions for all time series of the given type (or all types).

source
PowerSystems.has_componentMethod
has_component(
+    sys::System,
+    T::Type{<:Component},
+    name::AbstractString
+) -> Bool
+

Check to see if the component of type T with name exists.

source
PowerSystems.iterate_componentsMethod
iterate_components(
+    sys::System
+) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent}}}, InfrastructureSystems.var"#110#111"}}
+

Iterates over all components.

Examples

for component in iterate_components(sys)
+    @show component
+end

See also: get_components

source
PowerSystems.iterate_supplemental_attributesMethod
iterate_supplemental_attributes(
+    sys::System
+) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{Base.UUID, <:SupplementalAttribute}}}, InfrastructureSystems.var"#110#111"}}
+

Iterates over all supplemental_attributes.

Examples

for supplemental_attribute in iterate_supplemental_attributes(sys)
+    @show supplemental_attribute
+end

See also: get_supplemental_attributes

source
PowerSystems.open_time_series_store!Function
open_time_series_store!(
+    func::Function,
+    sys::System;
+    ...
+) -> Any
+open_time_series_store!(
+    func::Function,
+    sys::System,
+    mode,
+    args...;
+    kwargs...
+) -> Any
+

Open the time series store for bulk additions or reads

This is recommended before calling add_time_series! many times because of the overhead associated with opening and closing an HDF5 file.

This is not necessary for an in-memory time series store.

Examples

# Assume there is a system with an array of Components and SingleTimeSeries
+# stored in the variables components and single_time_series, respectively
+open_time_series_store!(sys, "r+") do
+    for (component, ts) in zip(components, single_time_series)
+        add_time_series!(sys, component, ts)
+    end
+end

You can also use this function to make reads faster. Change the mode from "r+" to "r" to open the file read-only.

See also: bulk_add_time_series!

source
PowerSystems.remove_component!Method
remove_component!(sys::System, component::Component)
+

Remove a component from the system by its value.

Throws ArgumentError if the component is not stored.

source
PowerSystems.remove_component!Method
remove_component!(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+)
+

Remove a component from the system by its name.

Throws ArgumentError if the component is not stored.

source
PowerSystems.remove_supplemental_attribute!Method
remove_supplemental_attribute!(
+    sys::System,
+    component::Component,
+    attribute::SupplementalAttribute
+)
+

Remove the supplemental attribute from the component. The attribute will be removed from the system if it is not attached to any other component.

source
PowerSystems.remove_time_series!Method
remove_time_series!(
+    sys::System,
+    _::Type{T<:TimeSeriesData},
+    component::Component,
+    name::String
+)
+

Remove the time series data for a component and time series type.

source
PowerSystems.remove_time_series!Method
remove_time_series!(sys::System, _::Type{T<:TimeSeriesData})
+

Remove all the time series data for a time series type.

See also: clear_time_series!

If you are storing time series data in an HDF5 file, remove_time_series! does not actually free up file space (HDF5 behavior). If you want to remove all or most time series instances then consider using clear_time_series!. It will delete the HDF5 file and create a new one. PowerSystems has plans to automate this type of workflow.

source
PowerSystems.set_runchecks!Method
set_runchecks!(sys::System, value::Bool)
+

Enable or disable system checks. Applies to component addition as well as overall system consistency.

source
PowerSystems.set_units_base_system!Method
set_units_base_system!(system::System, settings::String)
+

Sets the units base for the getter functions on the devices. It modifies the behavior of all getter functions

source
PowerSystems.transform_single_time_series!Method
transform_single_time_series!(
+    sys::System,
+    horizon::Dates.Period,
+    interval::Dates.Period
+)
+

Transform all instances of SingleTimeSeries in a System to DeterministicSingleTimeSeries

This can be used to generate a perfect forecast from historical measurements or realizations when actual forecasts are unavailable, without unnecessarily duplicating data.

If all SingleTimeSeries instances cannot be transformed then none will be.

Any existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.

Arguments

  • sys::System: System containing the components.
  • horizon::Dates.Period: desired horizon of each forecast window
  • interval::Dates.Period: desired interval between forecast windows
source
PowerSystems.show_componentsFunction
show_components(
+    sys::System,
+    component_type::Type{<:Component};
+    ...
+)
+show_components(
+    sys::System,
+    component_type::Type{<:Component},
+    additional_columns::Union{Dict, Vector};
+    kwargs...
+)
+

Show all components of the given type in a table.

Arguments

  • sys::System: System containing the components.
  • component_type::Type{<:Component}: Type to display. Must be a concrete type.
  • additional_columns::Union{Dict, Vector}: Additional columns to display. The Dict option is a mapping of column name to function. The function must accept a component. The Vector option is an array of field names for the component_type.

Extra keyword arguments are forwarded to PrettyTables.pretty_table.

Examples

show_components(sys, ThermalStandard)
+show_components(sys, ThermalStandard, Dict("has_time_series" => x -> has_time_series(x)))
+show_components(sys, ThermalStandard, [:active_power, :reactive_power])
source
PowerSystems.generate_struct_fileMethod
generate_struct_file(
+    definition::StructDefinition;
+    filename,
+    output_directory
+)
+

Generate a Julia source code file for one struct from a StructDefinition.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definition::StructDefinition: Defines the struct and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/models/generated
source
PowerSystems.generate_struct_filesMethod
generate_struct_files(
+    definitions;
+    filename,
+    output_directory
+)
+

Generate Julia source code files for multiple structs from a iterable of StructDefinition instances.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definitions: Defines the structs and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/models/generated
source

Additional Component Methods

PowerSystems.get_max_reactive_powerMethod
get_max_reactive_power(d::RenewableDispatch) -> Any
+

Return the max reactive power for the Renewable Generation calculated as the rating * powerfactor if reactivepower_limits is nothing

source

Parsing

PowerSystems.PowerSystemTableDataMethod
PowerSystemTableData(
+    directory::AbstractString,
+    base_power::Float64,
+    user_descriptor_file::AbstractString;
+    descriptor_file,
+    generator_mapping_file,
+    timeseries_metadata_file
+) -> PowerSystemTableData
+

Reads in all the data stored in csv files The general format for data is folder: gen.csv branch.csv bus.csv .. load.csv

Arguments

  • directory::AbstractString: directory containing CSV files
  • base_power::Float64: base power for System
  • user_descriptor_file::AbstractString: customized input descriptor file
  • descriptor_file=POWER_SYSTEM_DESCRIPTOR_FILE: PowerSystems descriptor file
  • generator_mapping_file=GENERATOR_MAPPING_FILE: generator mapping configuration file
source
PowerSystems.create_poly_costMethod
create_poly_cost(
+    gen,
+    cost_colnames
+) -> Union{Tuple{LinearCurve, Float64}, Tuple{QuadraticCurve, Float64}}
+
create_poly_cost(gen, cost_colnames)

Return a Polynomial function cost based on the coeffiecients provided on gen.

Three supported cases,

  1. If three values are passed then we have data looking like: a2 * x^2 + a1 * x + a0,
  2. If a1 and a0 are passed then we have data looking like: a1 * x + a0,
  3. If only a1 is passed then we have data looking like: a1 * x.
source
PowerSystems.PowerModelsDataMethod
PowerModelsData(
+    file::Union{IO, String};
+    kwargs...
+) -> PowerModelsData
+

Constructs PowerModelsData from a raw file. Currently Supports MATPOWER and PSSE data files parsed by PowerModels.

source
PowerSystems.TamuSystemMethod
TamuSystem(tamu_folder::AbstractString; kwargs...) -> Any
+

Creates a system from a PSS/e .RAW (v33) load flow case, and an associated .csv with MW load time series data. The format is established by the Texas A&M University Test Case Archive

The general format for data is folder: [casename].raw [casename]loadtimeseriesMW.csv

Arguments

  • directory::AbstractString: directory containing RAW and CSV files

Examples

sys = TamuSystem(
+    "./ACTIVSg25k",
+    config_path = "ACTIVSg25k_validation.json",
+    bus_name_formatter = x->string(x["name"]*"-"*string(x["index"])),
+    load_name_formatter = x->strip(join(x["source_id"], "_"))
+)
source
PowerSystems.add_dyn_injectors!Method
add_dyn_injectors!(sys::System, dyr_file::AbstractString)
+

Add to a system already created the dynamic components. The system should already be parsed from a .raw file.

Examples:

dyr_file = "Example.dyr"
+add_dyn_injectors!(sys, dyr_file)
source
PowerSystems.parse_fileMethod
parse_file(
+    io::IO;
+    import_all,
+    validate,
+    correct_branch_rating,
+    filetype
+) -> Any
+

Parses the iostream from a file

source
PowerSystems.parse_fileMethod
parse_file(
+    file::String;
+    import_all,
+    validate,
+    correct_branch_rating
+) -> Any
+
parse_file(
+    file;
+    import_all = false,
+    validate = true,
+    correct_branch_rating = true,
+)

Parses a Matpower .m file or PTI (PSS(R)E-v33) .raw file into a PowerModels data structure. All fields from PTI files will be imported if import_all is true (Default: false).

source

Logging

PowerSystems.configure_loggingMethod
configure_logging(
+;
+    console_level,
+    file_level,
+    filename
+) -> MultiLogger
+

Creates console and file loggers.

Note: Log messages may not be written to the file until flush() or close() is called on the returned logger.

Arguments

  • console_level = Logging.Error: level for console messages
  • file_level = Logging.Info: level for file messages
  • filename::Union{Nothing, AbstractString} = "power-systems.log": log file; pass nothing to disable file logging

Example

logger = configure_logging(console_level = Logging.Info)
+@info "log message"
+close(logger)
source
diff --git a/previews/PR1200/api/type_tree/index.html b/previews/PR1200/api/type_tree/index.html new file mode 100644 index 0000000000..842859010e --- /dev/null +++ b/previews/PR1200/api/type_tree/index.html @@ -0,0 +1,232 @@ + +Type Hierarchy · PowerSystems.jl

Type Hierarchy

Here is the complete PowerSystems.jl type hierarchy:

InfrastructureSystems.InfrastructureSystemsType
+ ├─ InfrastructureSystems.AbstractTimeSeriesParameters
+ │   ├─ InfrastructureSystems.ForecastParameters
+ │   └─ InfrastructureSystems.StaticTimeSeriesParameters
+ ├─ InfrastructureSystems.ComponentUUIDs
+ ├─ InfrastructureSystems.DeviceParameter
+ │   ├─ DynamicComponent
+ │   │   ├─ PowerSystems.DynamicGeneratorComponent
+ │   │   │   ├─ AVR
+ │   │   │   │   ├─ AVRFixed
+ │   │   │   │   ├─ AVRSimple
+ │   │   │   │   ├─ AVRTypeI
+ │   │   │   │   ├─ AVRTypeII
+ │   │   │   │   ├─ ESAC1A
+ │   │   │   │   ├─ ESAC6A
+ │   │   │   │   ├─ ESAC8B
+ │   │   │   │   ├─ ESDC1A
+ │   │   │   │   ├─ ESDC2A
+ │   │   │   │   ├─ ESST1A
+ │   │   │   │   ├─ ESST4B
+ │   │   │   │   ├─ EXAC1
+ │   │   │   │   ├─ EXAC1A
+ │   │   │   │   ├─ EXAC2
+ │   │   │   │   ├─ EXPIC1
+ │   │   │   │   ├─ IEEET1
+ │   │   │   │   ├─ PowerSystems.EX4VSA
+ │   │   │   │   ├─ PowerSystems.EXST1
+ │   │   │   │   ├─ SCRX
+ │   │   │   │   ├─ SEXS
+ │   │   │   │   ├─ ST6B
+ │   │   │   │   └─ ST8C
+ │   │   │   ├─ Machine
+ │   │   │   │   ├─ AndersonFouadMachine
+ │   │   │   │   ├─ BaseMachine
+ │   │   │   │   ├─ FullMachine
+ │   │   │   │   ├─ MarconatoMachine
+ │   │   │   │   ├─ OneDOneQMachine
+ │   │   │   │   ├─ RoundRotorExponential
+ │   │   │   │   ├─ RoundRotorMachine
+ │   │   │   │   ├─ RoundRotorQuadratic
+ │   │   │   │   ├─ SalientPoleExponential
+ │   │   │   │   ├─ SalientPoleMachine
+ │   │   │   │   ├─ SalientPoleQuadratic
+ │   │   │   │   ├─ SauerPaiMachine
+ │   │   │   │   ├─ SimpleAFMachine
+ │   │   │   │   ├─ SimpleFullMachine
+ │   │   │   │   └─ SimpleMarconatoMachine
+ │   │   │   ├─ PSS
+ │   │   │   │   ├─ IEEEST
+ │   │   │   │   ├─ PSS2A
+ │   │   │   │   ├─ PSS2B
+ │   │   │   │   ├─ PSS2C
+ │   │   │   │   ├─ PSSFixed
+ │   │   │   │   ├─ PSSSimple
+ │   │   │   │   └─ STAB1
+ │   │   │   ├─ Shaft
+ │   │   │   │   ├─ FiveMassShaft
+ │   │   │   │   └─ SingleMass
+ │   │   │   └─ TurbineGov
+ │   │   │       ├─ DEGOV
+ │   │   │       ├─ DEGOV1
+ │   │   │       ├─ GasTG
+ │   │   │       ├─ GeneralGovModel
+ │   │   │       ├─ HydroTurbineGov
+ │   │   │       ├─ IEEETurbineGov1
+ │   │   │       ├─ PIDGOV
+ │   │   │       ├─ SteamTurbineGov1
+ │   │   │       ├─ TGFixed
+ │   │   │       ├─ TGSimple
+ │   │   │       ├─ TGTypeI
+ │   │   │       ├─ TGTypeII
+ │   │   │       └─ WPIDHY
+ │   │   ├─ PowerSystems.DynamicInverterComponent
+ │   │   │   ├─ Converter
+ │   │   │   │   ├─ AverageConverter
+ │   │   │   │   ├─ RenewableEnergyConverterTypeA
+ │   │   │   │   └─ RenewableEnergyVoltageConverterTypeA
+ │   │   │   ├─ DCSource
+ │   │   │   │   ├─ FixedDCSource
+ │   │   │   │   └─ ZeroOrderBESS
+ │   │   │   ├─ Filter
+ │   │   │   │   ├─ LCFilter
+ │   │   │   │   ├─ LCLFilter
+ │   │   │   │   └─ RLFilter
+ │   │   │   ├─ FrequencyEstimator
+ │   │   │   │   ├─ FixedFrequency
+ │   │   │   │   ├─ KauraPLL
+ │   │   │   │   └─ ReducedOrderPLL
+ │   │   │   ├─ InnerControl
+ │   │   │   │   ├─ CurrentModeControl
+ │   │   │   │   ├─ RECurrentControlB
+ │   │   │   │   └─ VoltageModeControl
+ │   │   │   ├─ OuterControl
+ │   │   │   └─ OutputCurrentLimiter
+ │   │   │       ├─ HybridOutputCurrentLimiter
+ │   │   │       ├─ InstantaneousOutputCurrentLimiter
+ │   │   │       ├─ MagnitudeOutputCurrentLimiter
+ │   │   │       ├─ PriorityOutputCurrentLimiter
+ │   │   │       └─ SaturationOutputCurrentLimiter
+ │   │   └─ PowerSystems.InverterComponent
+ │   ├─ OperationalCost
+ │   │   ├─ HydroGenerationCost
+ │   │   ├─ LoadCost
+ │   │   ├─ MarketBidCost
+ │   │   ├─ RenewableGenerationCost
+ │   │   ├─ StorageCost
+ │   │   └─ ThermalGenerationCost
+ │   ├─ PowerSystems.ActivePowerControl
+ │   │   ├─ ActivePowerDroop
+ │   │   ├─ ActivePowerPI
+ │   │   ├─ ActiveRenewableControllerAB
+ │   │   ├─ ActiveVirtualOscillator
+ │   │   └─ VirtualInertia
+ │   └─ PowerSystems.ReactivePowerControl
+ │       ├─ ReactivePowerDroop
+ │       ├─ ReactivePowerPI
+ │       ├─ ReactiveRenewableControllerAB
+ │       └─ ReactiveVirtualOscillator
+ ├─ InfrastructureSystems.InfrastructureSystemsComponent
+ │   ├─ Component
+ │   │   ├─ Device
+ │   │   │   ├─ Branch
+ │   │   │   │   ├─ ACBranch
+ │   │   │   │   │   ├─ DynamicBranch
+ │   │   │   │   │   ├─ Line
+ │   │   │   │   │   ├─ MonitoredLine
+ │   │   │   │   │   ├─ PhaseShiftingTransformer
+ │   │   │   │   │   ├─ TapTransformer
+ │   │   │   │   │   ├─ Transformer2W
+ │   │   │   │   │   ├─ TwoTerminalHVDCLine
+ │   │   │   │   │   └─ TwoTerminalVSCDCLine
+ │   │   │   │   ├─ AreaInterchange
+ │   │   │   │   └─ DCBranch
+ │   │   │   │       └─ TModelHVDCLine
+ │   │   │   ├─ DynamicInjection
+ │   │   │   │   ├─ ActiveConstantPowerLoad
+ │   │   │   │   ├─ AggregateDistributedGenerationA
+ │   │   │   │   ├─ CSVGN1
+ │   │   │   │   ├─ DynamicExponentialLoad
+ │   │   │   │   ├─ DynamicGenerator
+ │   │   │   │   ├─ DynamicInverter
+ │   │   │   │   ├─ GenericDER
+ │   │   │   │   ├─ PeriodicVariableSource
+ │   │   │   │   ├─ SimplifiedSingleCageInductionMachine
+ │   │   │   │   └─ SingleCageInductionMachine
+ │   │   │   └─ StaticInjection
+ │   │   │       ├─ ElectricLoad
+ │   │   │       │   ├─ FixedAdmittance
+ │   │   │       │   ├─ StaticLoad
+ │   │   │       │   │   ├─ ControllableLoad
+ │   │   │       │   │   │   └─ InterruptiblePowerLoad
+ │   │   │       │   │   ├─ ExponentialLoad
+ │   │   │       │   │   ├─ PowerLoad
+ │   │   │       │   │   └─ StandardLoad
+ │   │   │       │   └─ SwitchedAdmittance
+ │   │   │       ├─ Generator
+ │   │   │       │   ├─ HydroGen
+ │   │   │       │   │   ├─ HydroDispatch
+ │   │   │       │   │   ├─ HydroEnergyReservoir
+ │   │   │       │   │   └─ HydroPumpedStorage
+ │   │   │       │   ├─ RenewableGen
+ │   │   │       │   │   ├─ RenewableDispatch
+ │   │   │       │   │   └─ RenewableNonDispatch
+ │   │   │       │   └─ ThermalGen
+ │   │   │       │       ├─ ThermalMultiStart
+ │   │   │       │       └─ ThermalStandard
+ │   │   │       ├─ InterconnectingConverter
+ │   │   │       ├─ Source
+ │   │   │       ├─ StaticInjectionSubsystem
+ │   │   │       │   └─ HybridSystem
+ │   │   │       └─ Storage
+ │   │   │           └─ EnergyReservoirStorage
+ │   │   ├─ Service
+ │   │   │   ├─ AGC
+ │   │   │   ├─ AbstractReserve
+ │   │   │   │   ├─ Reserve
+ │   │   │   │   │   ├─ ConstantReserve
+ │   │   │   │   │   ├─ ReserveDemandCurve
+ │   │   │   │   │   └─ VariableReserve
+ │   │   │   │   └─ ReserveNonSpinning
+ │   │   │   │       ├─ ConstantReserveNonSpinning
+ │   │   │   │       └─ VariableReserveNonSpinning
+ │   │   │   ├─ ConstantReserveGroup
+ │   │   │   └─ TransmissionInterface
+ │   │   └─ Topology
+ │   │       ├─ AggregationTopology
+ │   │       │   ├─ Area
+ │   │       │   └─ LoadZone
+ │   │       ├─ Arc
+ │   │       └─ Bus
+ │   │           ├─ ACBus
+ │   │           └─ DCBus
+ │   ├─ InfrastructureSystems.AdditionalTestComponent
+ │   ├─ InfrastructureSystems.SimpleTestComponent
+ │   └─ InfrastructureSystems.TestComponent
+ ├─ InfrastructureSystems.InfrastructureSystemsContainer
+ │   ├─ InfrastructureSystems.Components
+ │   └─ InfrastructureSystems.SupplementalAttributeManager
+ ├─ InfrastructureSystems.InfrastructureSystemsInternal
+ ├─ InfrastructureSystems.SharedSystemReferences
+ ├─ InfrastructureSystems.SystemData
+ ├─ InfrastructureSystems.TimeSeriesManager
+ ├─ InfrastructureSystems.TimeSeriesMetadata
+ │   ├─ InfrastructureSystems.ForecastMetadata
+ │   │   ├─ InfrastructureSystems.DeterministicMetadata
+ │   │   ├─ InfrastructureSystems.ProbabilisticMetadata
+ │   │   └─ InfrastructureSystems.ScenariosMetadata
+ │   └─ InfrastructureSystems.StaticTimeSeriesMetadata
+ │       └─ InfrastructureSystems.SingleTimeSeriesMetadata
+ ├─ PowerSystems.SystemMetadata
+ ├─ SupplementalAttribute
+ │   ├─ Contingency
+ │   │   └─ Outage
+ │   │       ├─ GeometricDistributionForcedOutage
+ │   │       ├─ PlannedOutage
+ │   │       └─ TimeSeriesForcedOutage
+ │   ├─ GeographicInfo
+ │   └─ InfrastructureSystems.TestSupplemental
+ ├─ System
+ ├─ TimeSeriesData
+ │   ├─ Forecast
+ │   │   ├─ AbstractDeterministic
+ │   │   │   ├─ Deterministic
+ │   │   │   └─ DeterministicSingleTimeSeries
+ │   │   ├─ Probabilistic
+ │   │   └─ Scenarios
+ │   └─ StaticTimeSeries
+ │       └─ SingleTimeSeries
+ └─ TimeSeriesKey
+     ├─ ForecastKey
+     └─ StaticTimeSeriesKey
diff --git a/previews/PR1200/api/valuecurve_options/index.html b/previews/PR1200/api/valuecurve_options/index.html new file mode 100644 index 0000000000..1dbe7a0513 --- /dev/null +++ b/previews/PR1200/api/valuecurve_options/index.html @@ -0,0 +1,2 @@ + +ValueCurve Options · PowerSystems.jl

ValueCurve Options

Operating cost data typically includes both fixed and variable costs. See the how-to on Adding an Operating Cost for a demonstration of defining an operating cost.

In PowerSystems.jl, the variable portion of the operating cost can be represented as linear, quadratic, or piecewise input-output curves; potentially piecewise marginal heat rates; average heat rates; and more, as best fits the input data. This is done by constructing various subtypes of ValueCurve.

This summary table shows each way to construct a ValueCurve with the user-friendly subtype aliases. The ValueCurves make no assumption about units; the example interpretation given here assumes that the variable cost ValueCurve will be wrapped in a CostCurve with natural units. Note that all four Piecewise options here fundamentally represent the same curve. More information and explanatory plots are provided for each subtype alias in the subheadings below.

DescriptionExampleExample interpretation
Linear input-output curve with zero no-load cost (constant average rate)LinearCurve(5.0)$5/MWh
Linear input-output curve with potentially nonzero no-load cost (constant marginal rate)LinearCurve(5.0, 15.0)$5/MWh + $15/hr
Quadratic input-output curve with potentially nonzero no-load costQuadraticCurve(1.0, 1.0, 18.0)$C(P) = 1 P^2 + 1 P + 18$ where $C$ is $/hr, $P$ is MW
Piecewise linear curve specified by cost values at production pointsPiecewisePointCurve([(1.0, 20.0), (2.0, 24.0), (3.0, 30.0)])$20/hr @ 1 MW, $24/hr @ 2 MW, $30/hr @ 3 MW, linear $/hr interpolation between these points
Piecewise linear curve specified by initial value and marginal rates (slopes) between production pointsPiecewiseIncrementalCurve(20.0, [1.0, 2.0, 3.0], [4.0, 6.0])$20/hr @ 1 MW plus additional $4/MWh from 1 MW to 2 MW plus additional $6/MWh from 2 MW to 3 MW
No-load cost plus piecewise linear curve specified by initial value and marginal rates (slopes) between production pointsPiecewiseIncrementalCurve(18.0, 20.0, [1.0, 2.0, 3.0], [4.0, 6.0])$18/hr no-load cost; $20/hr @ 1 MW plus additional $4/MWh from 1 MW to 2 MW plus additional $6/MWh from 2 MW to 3 MW
Piecewise linear curve specified by initial value and average rates between production pointsPiecewiseAverageCurve(20.0, [1.0, 2.0, 3.0], [12.0, 10.0])$20/hr @ 1 MW, $12/MWh @ 2 MW, $10/MWh @ 3 MW, linear $/hr interpolation between these points

LinearCurve

Specify the marginal cost of production $M$ and optionally the no-load cost $C$, which defaults to zero. Here is a graphical representation:

QuadraticCurve

Specify the quadratic ($Q$), proportional ($M$), and constant ($C$) terms of a function that defines the input-output curve:

PiecewisePointCurve

Specify a vector of $K$ (production, cost) pairs (i.e., $(P_k, C_k)$ for $k = 1, \dots, K$) to define the input-output curve:

PiecewiseIncrementalCurve

Specify the cost $C_1$ at the least production point given (NOT the cost at zero production), a vector of $K$ production points $P_1, \dots, P_k$, and a vector of $K-1$ marginal rates $M_1, \dots, M_{k-1}$, that represent the slopes of the curve segments between the points. $C_1$ may be nothing, which results in a not-fully-defined curve. The no-load cost $C_0$ can optionally be specified as a first argument; it is not part of the representation of the curve, just another piece of data that may be stored:

PiecewiseAverageCurve

Specify the cost $C_1$ at the least production point given (NOT the cost at zero production), a vector of $K$ production points $P_1, \dots, P_k$, and a vector of $K-1$ average rates $R_1, \dots, R_{k-1}$ at the $K-1$ latter production points:

diff --git a/previews/PR1200/assets/AbstractTree.png b/previews/PR1200/assets/AbstractTree.png new file mode 100644 index 0000000000..ba90123ce7 Binary files /dev/null and b/previews/PR1200/assets/AbstractTree.png differ diff --git a/previews/PR1200/assets/DynamicInjection.png b/previews/PR1200/assets/DynamicInjection.png new file mode 100644 index 0000000000..ee3be082a5 Binary files /dev/null and b/previews/PR1200/assets/DynamicInjection.png differ diff --git a/previews/PR1200/assets/System.png b/previews/PR1200/assets/System.png new file mode 100644 index 0000000000..d9067cc1e0 Binary files /dev/null and b/previews/PR1200/assets/System.png differ diff --git a/previews/PR1200/assets/ThermalStandard.png b/previews/PR1200/assets/ThermalStandard.png new file mode 100644 index 0000000000..f3bdb6ba56 Binary files /dev/null and b/previews/PR1200/assets/ThermalStandard.png differ diff --git a/previews/PR1200/assets/cost_plot_drawings/LinearCurve.png b/previews/PR1200/assets/cost_plot_drawings/LinearCurve.png new file mode 100644 index 0000000000..d4e5340ffd Binary files /dev/null and b/previews/PR1200/assets/cost_plot_drawings/LinearCurve.png differ diff --git a/previews/PR1200/assets/cost_plot_drawings/PiecewiseAverageCurve.png b/previews/PR1200/assets/cost_plot_drawings/PiecewiseAverageCurve.png new file mode 100644 index 0000000000..c625713dda Binary files /dev/null and b/previews/PR1200/assets/cost_plot_drawings/PiecewiseAverageCurve.png differ diff --git a/previews/PR1200/assets/cost_plot_drawings/PiecewiseIncrementalCurve.png b/previews/PR1200/assets/cost_plot_drawings/PiecewiseIncrementalCurve.png new file mode 100644 index 0000000000..735fcff636 Binary files /dev/null and b/previews/PR1200/assets/cost_plot_drawings/PiecewiseIncrementalCurve.png differ diff --git a/previews/PR1200/assets/cost_plot_drawings/PiecewisePointCurve.png b/previews/PR1200/assets/cost_plot_drawings/PiecewisePointCurve.png new file mode 100644 index 0000000000..641a776a0e Binary files /dev/null and b/previews/PR1200/assets/cost_plot_drawings/PiecewisePointCurve.png differ diff --git a/previews/PR1200/assets/cost_plot_drawings/QuadraticCurve.png b/previews/PR1200/assets/cost_plot_drawings/QuadraticCurve.png new file mode 100644 index 0000000000..0d97e30159 Binary files /dev/null and b/previews/PR1200/assets/cost_plot_drawings/QuadraticCurve.png differ diff --git a/previews/PR1200/assets/documenter.js b/previews/PR1200/assets/documenter.js new file mode 100644 index 0000000000..82252a11da --- /dev/null +++ b/previews/PR1200/assets/documenter.js @@ -0,0 +1,1064 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min', + 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "katex-auto-render": { + "deps": [ + "katex" + ] + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { +$(document).ready(function() { + renderMathInElement( + document.body, + { + "delimiters": [ + { + "left": "$", + "right": "$", + "display": false + }, + { + "left": "$$", + "right": "$$", + "display": true + }, + { + "left": "\\[", + "right": "\\]", + "display": true + } + ] +} + + ); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +let timer = 0; +var isExpanded = true; + +$(document).on( + "click", + ".docstring .docstring-article-toggle-button", + function () { + let articleToggleTitle = "Expand docstring"; + const parent = $(this).parent(); + + debounce(() => { + if (parent.siblings("section").is(":visible")) { + parent + .find("a.docstring-article-toggle-button") + .removeClass("fa-chevron-down") + .addClass("fa-chevron-right"); + } else { + parent + .find("a.docstring-article-toggle-button") + .removeClass("fa-chevron-right") + .addClass("fa-chevron-down"); + + articleToggleTitle = "Collapse docstring"; + } + + parent + .children(".docstring-article-toggle-button") + .prop("title", articleToggleTitle); + parent.siblings("section").slideToggle(); + }); + } +); + +$(document).on("click", ".docs-article-toggle-button", function (event) { + let articleToggleTitle = "Expand docstring"; + let navArticleToggleTitle = "Expand all docstrings"; + let animationSpeed = event.noToggleAnimation ? 0 : 400; + + debounce(() => { + if (isExpanded) { + $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down"); + $("a.docstring-article-toggle-button") + .removeClass("fa-chevron-down") + .addClass("fa-chevron-right"); + + isExpanded = false; + + $(".docstring section").slideUp(animationSpeed); + } else { + $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up"); + $("a.docstring-article-toggle-button") + .removeClass("fa-chevron-right") + .addClass("fa-chevron-down"); + + isExpanded = true; + articleToggleTitle = "Collapse docstring"; + navArticleToggleTitle = "Collapse all docstrings"; + + $(".docstring section").slideDown(animationSpeed); + } + + $(this).prop("title", navArticleToggleTitle); + $(".docstring-article-toggle-button").prop("title", articleToggleTitle); + }); +}); + +function debounce(callback, timeout = 300) { + if (Date.now() - timer > timeout) { + callback(); + } + + clearTimeout(timer); + + timer = Date.now(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fa-solid", "fa-copy"); + button.setAttribute("aria-label", "Copy this code block"); + button.setAttribute("title", "Copy"); + + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-xmark"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-xmark"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function () { + $("#documenter .docs-navbar").headroom({ + tolerance: { up: 10, down: 10 }, + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +$(document).ready(function () { + let meta = $("div[data-docstringscollapsed]").data(); + + if (meta?.docstringscollapsed) { + $("#documenter-article-toggle-button").trigger({ + type: "click", + noToggleAnimation: true, + }); + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +/* +To get an in-depth about the thought process you can refer: https://hetarth02.hashnode.dev/series/gsoc + +PSEUDOCODE: + +Searching happens automatically as the user types or adjusts the selected filters. +To preserve responsiveness, as much as possible of the slow parts of the search are done +in a web worker. Searching and result generation are done in the worker, and filtering and +DOM updates are done in the main thread. The filters are in the main thread as they should +be very quick to apply. This lets filters be changed without re-searching with minisearch +(which is possible even if filtering is on the worker thread) and also lets filters be +changed _while_ the worker is searching and without message passing (neither of which are +possible if filtering is on the worker thread) + +SEARCH WORKER: + +Import minisearch + +Build index + +On message from main thread + run search + find the first 200 unique results from each category, and compute their divs for display + note that this is necessary and sufficient information for the main thread to find the + first 200 unique results from any given filter set + post results to main thread + +MAIN: + +Launch worker + +Declare nonconstant globals (worker_is_running, last_search_text, unfiltered_results) + +On text update + if worker is not running, launch_search() + +launch_search + set worker_is_running to true, set last_search_text to the search text + post the search query to worker + +on message from worker + if last_search_text is not the same as the text in the search field, + the latest search result is not reflective of the latest search query, so update again + launch_search() + otherwise + set worker_is_running to false + + regardless, display the new search results to the user + save the unfiltered_results as a global + update_search() + +on filter click + adjust the filter selection + update_search() + +update_search + apply search filters by looping through the unfiltered_results and finding the first 200 + unique results that match the filters + + Update the DOM +*/ + +/////// SEARCH WORKER /////// + +function worker_function(documenterSearchIndex, documenterBaseURL, filters) { + importScripts( + "https://cdn.jsdelivr.net/npm/minisearch@6.1.0/dist/umd/index.min.js" + ); + + let data = documenterSearchIndex.map((x, key) => { + x["id"] = key; // minisearch requires a unique for each object + return x; + }); + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + const stopWords = new Set([ + "a", + "able", + "about", + "across", + "after", + "almost", + "also", + "am", + "among", + "an", + "and", + "are", + "as", + "at", + "be", + "because", + "been", + "but", + "by", + "can", + "cannot", + "could", + "dear", + "did", + "does", + "either", + "ever", + "every", + "from", + "got", + "had", + "has", + "have", + "he", + "her", + "hers", + "him", + "his", + "how", + "however", + "i", + "if", + "into", + "it", + "its", + "just", + "least", + "like", + "likely", + "may", + "me", + "might", + "most", + "must", + "my", + "neither", + "no", + "nor", + "not", + "of", + "off", + "often", + "on", + "or", + "other", + "our", + "own", + "rather", + "said", + "say", + "says", + "she", + "should", + "since", + "so", + "some", + "than", + "that", + "the", + "their", + "them", + "then", + "there", + "these", + "they", + "this", + "tis", + "to", + "too", + "twas", + "us", + "wants", + "was", + "we", + "were", + "what", + "when", + "who", + "whom", + "why", + "will", + "would", + "yet", + "you", + "your", + ]); + + let index = new MiniSearch({ + fields: ["title", "text"], // fields to index for full-text search + storeFields: ["location", "title", "text", "category", "page"], // fields to return with results + processTerm: (term) => { + let word = stopWords.has(term) ? null : term; + if (word) { + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + word = word + .replace(/^[^a-zA-Z0-9@!]+/, "") + .replace(/[^a-zA-Z0-9@!]+$/, ""); + + word = word.toLowerCase(); + } + + return word ?? null; + }, + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not + // find anything if searching for "add!", only for the entire qualification + tokenize: (string) => string.split(/[\s\-\.]+/), + // options which will be applied during the search + searchOptions: { + prefix: true, + boost: { title: 100 }, + fuzzy: 2, + }, + }); + + index.addAll(data); + + /** + * Used to map characters to HTML entities. + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + const htmlEscapes = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + }; + + /** + * Used to match HTML entities and HTML characters. + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + const reUnescapedHtml = /[&<>"']/g; + const reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** + * Escape function from lodash + * Refer: https://github.com/lodash/lodash/blob/main/src/escape.ts + */ + function escape(string) { + return string && reHasUnescapedHtml.test(string) + ? string.replace(reUnescapedHtml, (chr) => htmlEscapes[chr]) + : string || ""; + } + + /** + * RegX escape function from MDN + * Refer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ + function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + } + + /** + * Make the result component given a minisearch result data object and the value + * of the search input as queryString. To view the result object structure, refer: + * https://lucaong.github.io/minisearch/modules/_minisearch_.html#searchresult + * + * @param {object} result + * @param {string} querystring + * @returns string + */ + function make_search_result(result, querystring) { + let search_divider = `
`; + let display_link = + result.location.slice(Math.max(0), Math.min(50, result.location.length)) + + (result.location.length > 30 ? "..." : ""); // To cut-off the link because it messes with the overflow of the whole div + + if (result.page !== "") { + display_link += ` (${result.page})`; + } + searchstring = escapeRegExp(querystring); + let textindex = new RegExp(`${searchstring}`, "i").exec(result.text); + let text = + textindex !== null + ? result.text.slice( + Math.max(textindex.index - 100, 0), + Math.min( + textindex.index + querystring.length + 100, + result.text.length + ) + ) + : ""; // cut-off text before and after from the match + + text = text.length ? escape(text) : ""; + + let display_result = text.length + ? "..." + + text.replace( + new RegExp(`${escape(searchstring)}`, "i"), // For first occurrence + '$&' + ) + + "..." + : ""; // highlights the match + + let in_code = false; + if (!["page", "section"].includes(result.category.toLowerCase())) { + in_code = true; + } + + // We encode the full url to escape some special characters which can lead to broken links + let result_div = ` + +
+
${escape(result.title)}
+
${result.category}
+
+

+ ${display_result} +

+
+ ${display_link} +
+
+ ${search_divider} + `; + + return result_div; + } + + self.onmessage = function (e) { + let query = e.data; + let results = index.search(query, { + filter: (result) => { + // Only return relevant results + return result.score >= 1; + }, + combineWith: "AND", + }); + + // Pre-filter to deduplicate and limit to 200 per category to the extent + // possible without knowing what the filters are. + let filtered_results = []; + let counts = {}; + for (let filter of filters) { + counts[filter] = 0; + } + let present = {}; + + for (let result of results) { + cat = result.category; + cnt = counts[cat]; + if (cnt < 200) { + id = cat + "---" + result.location; + if (present[id]) { + continue; + } + present[id] = true; + filtered_results.push({ + location: result.location, + category: cat, + div: make_search_result(result, query), + }); + } + } + + postMessage(filtered_results); + }; +} + +// `worker = Threads.@spawn worker_function(documenterSearchIndex)`, but in JavaScript! +const filters = [ + ...new Set(documenterSearchIndex["docs"].map((x) => x.category)), +]; +const worker_str = + "(" + + worker_function.toString() + + ")(" + + JSON.stringify(documenterSearchIndex["docs"]) + + "," + + JSON.stringify(documenterBaseURL) + + "," + + JSON.stringify(filters) + + ")"; +const worker_blob = new Blob([worker_str], { type: "text/javascript" }); +const worker = new Worker(URL.createObjectURL(worker_blob)); + +/////// SEARCH MAIN /////// + +// Whether the worker is currently handling a search. This is a boolean +// as the worker only ever handles 1 or 0 searches at a time. +var worker_is_running = false; + +// The last search text that was sent to the worker. This is used to determine +// if the worker should be launched again when it reports back results. +var last_search_text = ""; + +// The results of the last search. This, in combination with the state of the filters +// in the DOM, is used compute the results to display on calls to update_search. +var unfiltered_results = []; + +// Which filter is currently selected +var selected_filter = ""; + +$(document).on("input", ".documenter-search-input", function (event) { + if (!worker_is_running) { + launch_search(); + } +}); + +function launch_search() { + worker_is_running = true; + last_search_text = $(".documenter-search-input").val(); + worker.postMessage(last_search_text); +} + +worker.onmessage = function (e) { + if (last_search_text !== $(".documenter-search-input").val()) { + launch_search(); + } else { + worker_is_running = false; + } + + unfiltered_results = e.data; + update_search(); +}; + +$(document).on("click", ".search-filter", function () { + if ($(this).hasClass("search-filter-selected")) { + selected_filter = ""; + } else { + selected_filter = $(this).text().toLowerCase(); + } + + // This updates search results and toggles classes for UI: + update_search(); +}); + +/** + * Make/Update the search component + */ +function update_search() { + let querystring = $(".documenter-search-input").val(); + + if (querystring.trim()) { + if (selected_filter == "") { + results = unfiltered_results; + } else { + results = unfiltered_results.filter((result) => { + return selected_filter == result.category.toLowerCase(); + }); + } + + let search_result_container = ``; + let modal_filters = make_modal_body_filters(); + let search_divider = `
`; + + if (results.length) { + let links = []; + let count = 0; + let search_results = ""; + + for (var i = 0, n = results.length; i < n && count < 200; ++i) { + let result = results[i]; + if (result.location && !links.includes(result.location)) { + search_results += result.div; + count++; + links.push(result.location); + } + } + + if (count == 1) { + count_str = "1 result"; + } else if (count == 200) { + count_str = "200+ results"; + } else { + count_str = count + " results"; + } + let result_count = `
${count_str}
`; + + search_result_container = ` +
+ ${modal_filters} + ${search_divider} + ${result_count} +
+ ${search_results} +
+
+ `; + } else { + search_result_container = ` +
+ ${modal_filters} + ${search_divider} +
0 result(s)
+
+
No result found!
+ `; + } + + if ($(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").removeClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(search_result_container); + } else { + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(` +
Type something to get started!
+ `); + } +} + +/** + * Make the modal filter html + * + * @returns string + */ +function make_modal_body_filters() { + let str = filters + .map((val) => { + if (selected_filter == val.toLowerCase()) { + return `${val}`; + } else { + return `${val}`; + } + }) + .join(""); + + return ` +
+ Filters: + ${str} +
`; +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function () { + var settings = $("#documenter-settings"); + $("#documenter-settings-button").click(function () { + settings.toggleClass("is-active"); + }); + // Close the dialog if X is clicked + $("#documenter-settings button.delete").click(function () { + settings.removeClass("is-active"); + }); + // Close dialog if ESC is pressed + $(document).keyup(function (e) { + if (e.keyCode == 27) settings.removeClass("is-active"); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +$(document).ready(function () { + let search_modal_header = ` + + `; + + let initial_search_body = ` +
Type something to get started!
+ `; + + let search_modal_footer = ` + + `; + + $(document.body).append( + ` + + ` + ); + + document.querySelector(".docs-search-query").addEventListener("click", () => { + openModal(); + }); + + document + .querySelector(".close-search-modal") + .addEventListener("click", () => { + closeModal(); + }); + + $(document).on("click", ".search-result-link", function () { + closeModal(); + }); + + document.addEventListener("keydown", (event) => { + if ((event.ctrlKey || event.metaKey) && event.key === "/") { + openModal(); + } else if (event.key === "Escape") { + closeModal(); + } + + return false; + }); + + // Functions to open and close a modal + function openModal() { + let searchModal = document.querySelector("#search-modal"); + + searchModal.classList.add("is-active"); + document.querySelector(".documenter-search-input").focus(); + } + + function closeModal() { + let searchModal = document.querySelector("#search-modal"); + let initial_search_body = ` +
Type something to get started!
+ `; + + searchModal.classList.remove("is-active"); + document.querySelector(".documenter-search-input").blur(); + + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".documenter-search-input").val(""); + $(".search-modal-card-body").html(initial_search_body); + } + + document + .querySelector("#search-modal .modal-background") + .addEventListener("click", () => { + closeModal(); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function () { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button"); + sidebar_button.click(function (ev) { + ev.preventDefault(); + sidebar.toggleClass("visible"); + if (sidebar.hasClass("visible")) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind("click", function (ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass("visible")) { + sidebar.removeClass("visible"); + } + }); +}); + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function () { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css("max-width"), 10); + var L0 = e.width(); + if (L0 > L) { + var h0 = parseInt(e.css("font-size"), 10); + e.css("font-size", (L * h0) / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on("orientationchange", resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function () { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if (typeof active !== "undefined") { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Theme picker setup +$(document).ready(function () { + // onchange callback + $("#documenter-themepicker").change(function themepick_callback(ev) { + var themename = $("#documenter-themepicker option:selected").attr("value"); + if (themename === "auto") { + // set_theme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); + window.localStorage.removeItem("documenter-theme"); + } else { + // set_theme(themename); + window.localStorage.setItem("documenter-theme", themename); + } + // We re-use the global function from themeswap.js to actually do the swapping. + set_theme_from_local_storage(); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if (typeof window.localStorage !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if (theme !== null) { + $("#documenter-themepicker option").each(function (i, e) { + e.selected = e.value === theme; + }); + } + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function () { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if ( + typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === "boolean" && + DOCUMENTER_VERSION_SELECTOR_DISABLED + ) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function (x) { + target_href = version_selector_select + .children("option:selected") + .get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if ( + typeof DOCUMENTER_CURRENT_VERSION !== "undefined" && + $("#version-selector > option").length == 0 + ) { + var option = $( + "" + ); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== "undefined") { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function (i, x) { + return x.text; + }); + DOC_VERSIONS.forEach(function (each) { + var version_url = documenterBaseURL + "/../" + each + "/"; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $( + "" + ); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}); + +}) diff --git a/previews/PR1200/assets/gen_metamodel.png b/previews/PR1200/assets/gen_metamodel.png new file mode 100644 index 0000000000..0f1772db3a Binary files /dev/null and b/previews/PR1200/assets/gen_metamodel.png differ diff --git a/previews/PR1200/assets/inv_metamodel.png b/previews/PR1200/assets/inv_metamodel.png new file mode 100644 index 0000000000..0dbe982737 Binary files /dev/null and b/previews/PR1200/assets/inv_metamodel.png differ diff --git a/previews/PR1200/assets/logo.png b/previews/PR1200/assets/logo.png new file mode 100644 index 0000000000..c0c5d7d594 Binary files /dev/null and b/previews/PR1200/assets/logo.png differ diff --git a/previews/PR1200/assets/themes/catppuccin-frappe.css b/previews/PR1200/assets/themes/catppuccin-frappe.css new file mode 100644 index 0000000000..32e3f00823 --- /dev/null +++ b/previews/PR1200/assets/themes/catppuccin-frappe.css @@ -0,0 +1 @@ +html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe .file-name,html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-frappe .pagination-previous:focus,html.theme--catppuccin-frappe .pagination-next:focus,html.theme--catppuccin-frappe .pagination-link:focus,html.theme--catppuccin-frappe .pagination-ellipsis:focus,html.theme--catppuccin-frappe .file-cta:focus,html.theme--catppuccin-frappe .file-name:focus,html.theme--catppuccin-frappe .select select:focus,html.theme--catppuccin-frappe .textarea:focus,html.theme--catppuccin-frappe .input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-frappe .button:focus,html.theme--catppuccin-frappe .is-focused.pagination-previous,html.theme--catppuccin-frappe .is-focused.pagination-next,html.theme--catppuccin-frappe .is-focused.pagination-link,html.theme--catppuccin-frappe .is-focused.pagination-ellipsis,html.theme--catppuccin-frappe .is-focused.file-cta,html.theme--catppuccin-frappe .is-focused.file-name,html.theme--catppuccin-frappe .select select.is-focused,html.theme--catppuccin-frappe .is-focused.textarea,html.theme--catppuccin-frappe .is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-focused.button,html.theme--catppuccin-frappe .pagination-previous:active,html.theme--catppuccin-frappe .pagination-next:active,html.theme--catppuccin-frappe .pagination-link:active,html.theme--catppuccin-frappe .pagination-ellipsis:active,html.theme--catppuccin-frappe .file-cta:active,html.theme--catppuccin-frappe .file-name:active,html.theme--catppuccin-frappe .select select:active,html.theme--catppuccin-frappe .textarea:active,html.theme--catppuccin-frappe .input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-frappe .button:active,html.theme--catppuccin-frappe .is-active.pagination-previous,html.theme--catppuccin-frappe .is-active.pagination-next,html.theme--catppuccin-frappe .is-active.pagination-link,html.theme--catppuccin-frappe .is-active.pagination-ellipsis,html.theme--catppuccin-frappe .is-active.file-cta,html.theme--catppuccin-frappe .is-active.file-name,html.theme--catppuccin-frappe .select select.is-active,html.theme--catppuccin-frappe .is-active.textarea,html.theme--catppuccin-frappe .is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .is-active.button{outline:none}html.theme--catppuccin-frappe .pagination-previous[disabled],html.theme--catppuccin-frappe .pagination-next[disabled],html.theme--catppuccin-frappe .pagination-link[disabled],html.theme--catppuccin-frappe .pagination-ellipsis[disabled],html.theme--catppuccin-frappe .file-cta[disabled],html.theme--catppuccin-frappe .file-name[disabled],html.theme--catppuccin-frappe .select select[disabled],html.theme--catppuccin-frappe .textarea[disabled],html.theme--catppuccin-frappe .input[disabled],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-frappe .button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-frappe .file-name,html.theme--catppuccin-frappe fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-frappe .select select,fieldset[disabled] html.theme--catppuccin-frappe .textarea,fieldset[disabled] html.theme--catppuccin-frappe .input,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe fieldset[disabled] .select select,html.theme--catppuccin-frappe .select fieldset[disabled] select,html.theme--catppuccin-frappe fieldset[disabled] .textarea,html.theme--catppuccin-frappe fieldset[disabled] .input,html.theme--catppuccin-frappe fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-frappe .button,html.theme--catppuccin-frappe fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-frappe .tabs,html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .breadcrumb,html.theme--catppuccin-frappe .file,html.theme--catppuccin-frappe .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-frappe .admonition:not(:last-child),html.theme--catppuccin-frappe .tabs:not(:last-child),html.theme--catppuccin-frappe .pagination:not(:last-child),html.theme--catppuccin-frappe .message:not(:last-child),html.theme--catppuccin-frappe .level:not(:last-child),html.theme--catppuccin-frappe .breadcrumb:not(:last-child),html.theme--catppuccin-frappe .block:not(:last-child),html.theme--catppuccin-frappe .title:not(:last-child),html.theme--catppuccin-frappe .subtitle:not(:last-child),html.theme--catppuccin-frappe .table-container:not(:last-child),html.theme--catppuccin-frappe .table:not(:last-child),html.theme--catppuccin-frappe .progress:not(:last-child),html.theme--catppuccin-frappe .notification:not(:last-child),html.theme--catppuccin-frappe .content:not(:last-child),html.theme--catppuccin-frappe .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .modal-close,html.theme--catppuccin-frappe .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-frappe .modal-close::before,html.theme--catppuccin-frappe .delete::before,html.theme--catppuccin-frappe .modal-close::after,html.theme--catppuccin-frappe .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-frappe .modal-close::before,html.theme--catppuccin-frappe .delete::before{height:2px;width:50%}html.theme--catppuccin-frappe .modal-close::after,html.theme--catppuccin-frappe .delete::after{height:50%;width:2px}html.theme--catppuccin-frappe .modal-close:hover,html.theme--catppuccin-frappe .delete:hover,html.theme--catppuccin-frappe .modal-close:focus,html.theme--catppuccin-frappe .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-frappe .modal-close:active,html.theme--catppuccin-frappe .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-frappe .is-small.modal-close,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-frappe .is-small.delete,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-frappe .is-medium.modal-close,html.theme--catppuccin-frappe .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-frappe .is-large.modal-close,html.theme--catppuccin-frappe .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-frappe .control.is-loading::after,html.theme--catppuccin-frappe .select.is-loading::after,html.theme--catppuccin-frappe .loader,html.theme--catppuccin-frappe .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #838ba7;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-frappe .hero-video,html.theme--catppuccin-frappe .modal-background,html.theme--catppuccin-frappe .modal,html.theme--catppuccin-frappe .image.is-square img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-frappe .image.is-square .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-frappe .image.is-1by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-frappe .image.is-1by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-frappe .image.is-5by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-frappe .image.is-5by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-frappe .image.is-4by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-frappe .image.is-4by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-frappe .image.is-3by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-frappe .image.is-5by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-frappe .image.is-5by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-frappe .image.is-16by9 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-frappe .image.is-16by9 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-frappe .image.is-2by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-frappe .image.is-2by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-frappe .image.is-3by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-frappe .image.is-3by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-frappe .image.is-4by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-frappe .image.is-4by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-frappe .image.is-3by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-frappe .image.is-3by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-frappe .image.is-2by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-frappe .image.is-2by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-frappe .image.is-3by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-frappe .image.is-9by16 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-frappe .image.is-9by16 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-frappe .image.is-1by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-frappe .image.is-1by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-frappe .image.is-1by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-frappe .image.is-1by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-frappe .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#414559 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#2b2e3c !important}.has-background-dark{background-color:#414559 !important}.has-text-primary{color:#8caaee !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#6089e7 !important}.has-background-primary{background-color:#8caaee !important}.has-text-primary-light{color:#edf2fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c1d1f6 !important}.has-background-primary-light{background-color:#edf2fc !important}.has-text-primary-dark{color:#153a8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#1c4cbb !important}.has-background-primary-dark{background-color:#153a8e !important}.has-text-link{color:#8caaee !important}a.has-text-link:hover,a.has-text-link:focus{color:#6089e7 !important}.has-background-link{background-color:#8caaee !important}.has-text-link-light{color:#edf2fc !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c1d1f6 !important}.has-background-link-light{background-color:#edf2fc !important}.has-text-link-dark{color:#153a8e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1c4cbb !important}.has-background-link-dark{background-color:#153a8e !important}.has-text-info{color:#81c8be !important}a.has-text-info:hover,a.has-text-info:focus{color:#5db9ac !important}.has-background-info{background-color:#81c8be !important}.has-text-info-light{color:#f1f9f8 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#cde9e5 !important}.has-background-info-light{background-color:#f1f9f8 !important}.has-text-info-dark{color:#2d675f !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#3c8a7f !important}.has-background-info-dark{background-color:#2d675f !important}.has-text-success{color:#a6d189 !important}a.has-text-success:hover,a.has-text-success:focus{color:#8ac364 !important}.has-background-success{background-color:#a6d189 !important}.has-text-success-light{color:#f4f9f0 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#d8ebcc !important}.has-background-success-light{background-color:#f4f9f0 !important}.has-text-success-dark{color:#446a29 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#5b8f38 !important}.has-background-success-dark{background-color:#446a29 !important}.has-text-warning{color:#e5c890 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#dbb467 !important}.has-background-warning{background-color:#e5c890 !important}.has-text-warning-light{color:#fbf7ee !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f1e2c5 !important}.has-background-warning-light{background-color:#fbf7ee !important}.has-text-warning-dark{color:#78591c !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#a17726 !important}.has-background-warning-dark{background-color:#78591c !important}.has-text-danger{color:#e78284 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#df575a !important}.has-background-danger{background-color:#e78284 !important}.has-text-danger-light{color:#fceeee !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f3c3c4 !important}.has-background-danger-light{background-color:#fceeee !important}.has-text-danger-dark{color:#9a1e20 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c52629 !important}.has-background-danger-dark{background-color:#9a1e20 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#414559 !important}.has-background-grey-darker{background-color:#414559 !important}.has-text-grey-dark{color:#51576d !important}.has-background-grey-dark{background-color:#51576d !important}.has-text-grey{color:#626880 !important}.has-background-grey{background-color:#626880 !important}.has-text-grey-light{color:#737994 !important}.has-background-grey-light{background-color:#737994 !important}.has-text-grey-lighter{color:#838ba7 !important}.has-background-grey-lighter{background-color:#838ba7 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-frappe html{background-color:#303446;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-frappe article,html.theme--catppuccin-frappe aside,html.theme--catppuccin-frappe figure,html.theme--catppuccin-frappe footer,html.theme--catppuccin-frappe header,html.theme--catppuccin-frappe hgroup,html.theme--catppuccin-frappe section{display:block}html.theme--catppuccin-frappe body,html.theme--catppuccin-frappe button,html.theme--catppuccin-frappe input,html.theme--catppuccin-frappe optgroup,html.theme--catppuccin-frappe select,html.theme--catppuccin-frappe textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-frappe code,html.theme--catppuccin-frappe pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-frappe body{color:#c6d0f5;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-frappe a{color:#8caaee;cursor:pointer;text-decoration:none}html.theme--catppuccin-frappe a strong{color:currentColor}html.theme--catppuccin-frappe a:hover{color:#99d1db}html.theme--catppuccin-frappe code{background-color:#292c3c;color:#c6d0f5;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-frappe hr{background-color:#292c3c;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-frappe img{height:auto;max-width:100%}html.theme--catppuccin-frappe input[type="checkbox"],html.theme--catppuccin-frappe input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-frappe small{font-size:.875em}html.theme--catppuccin-frappe span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-frappe strong{color:#b0bef1;font-weight:700}html.theme--catppuccin-frappe fieldset{border:none}html.theme--catppuccin-frappe pre{-webkit-overflow-scrolling:touch;background-color:#292c3c;color:#c6d0f5;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-frappe pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-frappe table td,html.theme--catppuccin-frappe table th{vertical-align:top}html.theme--catppuccin-frappe table td:not([align]),html.theme--catppuccin-frappe table th:not([align]){text-align:inherit}html.theme--catppuccin-frappe table th{color:#b0bef1}html.theme--catppuccin-frappe .box{background-color:#51576d;border-radius:8px;box-shadow:none;color:#c6d0f5;display:block;padding:1.25rem}html.theme--catppuccin-frappe a.box:hover,html.theme--catppuccin-frappe a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #8caaee}html.theme--catppuccin-frappe a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #8caaee}html.theme--catppuccin-frappe .button{background-color:#292c3c;border-color:#484d69;border-width:1px;color:#8caaee;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-frappe .button strong{color:inherit}html.theme--catppuccin-frappe .button .icon,html.theme--catppuccin-frappe .button .icon.is-small,html.theme--catppuccin-frappe .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-frappe .button .icon.is-medium,html.theme--catppuccin-frappe .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-frappe .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-frappe .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-frappe .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-frappe .button:hover,html.theme--catppuccin-frappe .button.is-hovered{border-color:#737994;color:#b0bef1}html.theme--catppuccin-frappe .button:focus,html.theme--catppuccin-frappe .button.is-focused{border-color:#737994;color:#769aeb}html.theme--catppuccin-frappe .button:focus:not(:active),html.theme--catppuccin-frappe .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button:active,html.theme--catppuccin-frappe .button.is-active{border-color:#51576d;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text{background-color:transparent;border-color:transparent;color:#c6d0f5;text-decoration:underline}html.theme--catppuccin-frappe .button.is-text:hover,html.theme--catppuccin-frappe .button.is-text.is-hovered,html.theme--catppuccin-frappe .button.is-text:focus,html.theme--catppuccin-frappe .button.is-text.is-focused{background-color:#292c3c;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text:active,html.theme--catppuccin-frappe .button.is-text.is-active{background-color:#1f212d;color:#b0bef1}html.theme--catppuccin-frappe .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-frappe .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#8caaee;text-decoration:none}html.theme--catppuccin-frappe .button.is-ghost:hover,html.theme--catppuccin-frappe .button.is-ghost.is-hovered{color:#8caaee;text-decoration:underline}html.theme--catppuccin-frappe .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:hover,html.theme--catppuccin-frappe .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:focus,html.theme--catppuccin-frappe .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white:focus:not(:active),html.theme--catppuccin-frappe .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .button.is-white:active,html.theme--catppuccin-frappe .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-frappe .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted:hover,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-frappe .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-outlined:hover,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-white.is-outlined:focus,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:hover,html.theme--catppuccin-frappe .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:focus,html.theme--catppuccin-frappe .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black:focus:not(:active),html.theme--catppuccin-frappe .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .button.is-black:active,html.theme--catppuccin-frappe .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-frappe .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted:hover,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-outlined:hover,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-black.is-outlined:focus,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:hover,html.theme--catppuccin-frappe .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:focus,html.theme--catppuccin-frappe .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light:focus:not(:active),html.theme--catppuccin-frappe .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .button.is-light:active,html.theme--catppuccin-frappe .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-frappe .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted:hover,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-outlined:hover,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-light.is-outlined:focus,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-dark,html.theme--catppuccin-frappe .content kbd.button{background-color:#414559;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:hover,html.theme--catppuccin-frappe .content kbd.button:hover,html.theme--catppuccin-frappe .button.is-dark.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-hovered{background-color:#3c3f52;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:focus,html.theme--catppuccin-frappe .content kbd.button:focus,html.theme--catppuccin-frappe .button.is-dark.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark:focus:not(:active),html.theme--catppuccin-frappe .content kbd.button:focus:not(:active),html.theme--catppuccin-frappe .button.is-dark.is-focused:not(:active),html.theme--catppuccin-frappe .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .button.is-dark:active,html.theme--catppuccin-frappe .content kbd.button:active,html.theme--catppuccin-frappe .button.is-dark.is-active,html.theme--catppuccin-frappe .content kbd.button.is-active{background-color:#363a4a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-dark[disabled],html.theme--catppuccin-frappe .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button{background-color:#414559;border-color:#414559;box-shadow:none}html.theme--catppuccin-frappe .button.is-dark.is-inverted,html.theme--catppuccin-frappe .content kbd.button.is-inverted{background-color:#fff;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted:hover,html.theme--catppuccin-frappe .content kbd.button.is-inverted:hover,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-dark.is-inverted[disabled],html.theme--catppuccin-frappe .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-loading::after,html.theme--catppuccin-frappe .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined,html.theme--catppuccin-frappe .content kbd.button.is-outlined{background-color:transparent;border-color:#414559;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-outlined:hover,html.theme--catppuccin-frappe .content kbd.button.is-outlined:hover,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-dark.is-outlined:focus,html.theme--catppuccin-frappe .content kbd.button.is-outlined:focus,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-focused{background-color:#414559;border-color:#414559;color:#fff}html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #414559 #414559 !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-dark.is-outlined[disabled],html.theme--catppuccin-frappe .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-outlined{background-color:transparent;border-color:#414559;box-shadow:none;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#414559}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #414559 #414559 !important}html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-primary,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:hover,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:focus,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary:focus:not(:active),html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-frappe .button.is-primary.is-focused:not(:active),html.theme--catppuccin-frappe .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button.is-primary:active,html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-frappe .button.is-primary.is-active,html.theme--catppuccin-frappe .docstring>section>a.button.is-active.docs-sourcelink{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-primary[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.docs-sourcelink{background-color:#8caaee;border-color:#8caaee;box-shadow:none}html.theme--catppuccin-frappe .button.is-primary.is-inverted,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-primary.is-inverted[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-loading::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-outlined:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-frappe .button.is-primary.is-outlined:focus,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-frappe .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-primary.is-outlined[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8caaee;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-frappe .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-primary.is-light,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .button.is-primary.is-light:hover,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-frappe .button.is-primary.is-light.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e2eafb;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-primary.is-light:active,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-frappe .button.is-primary.is-light.is-active,html.theme--catppuccin-frappe .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d7e1f9;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-link{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:hover,html.theme--catppuccin-frappe .button.is-link.is-hovered{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:focus,html.theme--catppuccin-frappe .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link:focus:not(:active),html.theme--catppuccin-frappe .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .button.is-link:active,html.theme--catppuccin-frappe .button.is-link.is-active{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link{background-color:#8caaee;border-color:#8caaee;box-shadow:none}html.theme--catppuccin-frappe .button.is-link.is-inverted{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted:hover,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-link.is-outlined{background-color:transparent;border-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-outlined:hover,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-link.is-outlined:focus,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-focused{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-outlined{background-color:transparent;border-color:#8caaee;box-shadow:none;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8caaee #8caaee !important}html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-link.is-light{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .button.is-link.is-light:hover,html.theme--catppuccin-frappe .button.is-link.is-light.is-hovered{background-color:#e2eafb;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-link.is-light:active,html.theme--catppuccin-frappe .button.is-link.is-light.is-active{background-color:#d7e1f9;border-color:transparent;color:#153a8e}html.theme--catppuccin-frappe .button.is-info{background-color:#81c8be;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:hover,html.theme--catppuccin-frappe .button.is-info.is-hovered{background-color:#78c4b9;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:focus,html.theme--catppuccin-frappe .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info:focus:not(:active),html.theme--catppuccin-frappe .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .button.is-info:active,html.theme--catppuccin-frappe .button.is-info.is-active{background-color:#6fc0b5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info{background-color:#81c8be;border-color:#81c8be;box-shadow:none}html.theme--catppuccin-frappe .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted:hover,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-info.is-outlined{background-color:transparent;border-color:#81c8be;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-outlined:hover,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-info.is-outlined:focus,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-focused{background-color:#81c8be;border-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #81c8be #81c8be !important}html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-outlined{background-color:transparent;border-color:#81c8be;box-shadow:none;color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #81c8be #81c8be !important}html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-info.is-light{background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .button.is-info.is-light:hover,html.theme--catppuccin-frappe .button.is-info.is-light.is-hovered{background-color:#e8f5f3;border-color:transparent;color:#2d675f}html.theme--catppuccin-frappe .button.is-info.is-light:active,html.theme--catppuccin-frappe .button.is-info.is-light.is-active{background-color:#dff1ef;border-color:transparent;color:#2d675f}html.theme--catppuccin-frappe .button.is-success{background-color:#a6d189;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:hover,html.theme--catppuccin-frappe .button.is-success.is-hovered{background-color:#9fcd80;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:focus,html.theme--catppuccin-frappe .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success:focus:not(:active),html.theme--catppuccin-frappe .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .button.is-success:active,html.theme--catppuccin-frappe .button.is-success.is-active{background-color:#98ca77;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success{background-color:#a6d189;border-color:#a6d189;box-shadow:none}html.theme--catppuccin-frappe .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted:hover,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-success.is-outlined{background-color:transparent;border-color:#a6d189;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-outlined:hover,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-success.is-outlined:focus,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-focused{background-color:#a6d189;border-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6d189 #a6d189 !important}html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-outlined{background-color:transparent;border-color:#a6d189;box-shadow:none;color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6d189 #a6d189 !important}html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-success.is-light{background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .button.is-success.is-light:hover,html.theme--catppuccin-frappe .button.is-success.is-light.is-hovered{background-color:#edf6e7;border-color:transparent;color:#446a29}html.theme--catppuccin-frappe .button.is-success.is-light:active,html.theme--catppuccin-frappe .button.is-success.is-light.is-active{background-color:#e6f2de;border-color:transparent;color:#446a29}html.theme--catppuccin-frappe .button.is-warning{background-color:#e5c890;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:hover,html.theme--catppuccin-frappe .button.is-warning.is-hovered{background-color:#e3c386;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:focus,html.theme--catppuccin-frappe .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning:focus:not(:active),html.theme--catppuccin-frappe .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .button.is-warning:active,html.theme--catppuccin-frappe .button.is-warning.is-active{background-color:#e0be7b;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning{background-color:#e5c890;border-color:#e5c890;box-shadow:none}html.theme--catppuccin-frappe .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted:hover,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined{background-color:transparent;border-color:#e5c890;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-outlined:hover,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-warning.is-outlined:focus,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-focused{background-color:#e5c890;border-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #e5c890 #e5c890 !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-frappe .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-outlined{background-color:transparent;border-color:#e5c890;box-shadow:none;color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #e5c890 #e5c890 !important}html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .button.is-warning.is-light{background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .button.is-warning.is-light:hover,html.theme--catppuccin-frappe .button.is-warning.is-light.is-hovered{background-color:#f9f2e4;border-color:transparent;color:#78591c}html.theme--catppuccin-frappe .button.is-warning.is-light:active,html.theme--catppuccin-frappe .button.is-warning.is-light.is-active{background-color:#f6edda;border-color:transparent;color:#78591c}html.theme--catppuccin-frappe .button.is-danger{background-color:#e78284;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:hover,html.theme--catppuccin-frappe .button.is-danger.is-hovered{background-color:#e57779;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:focus,html.theme--catppuccin-frappe .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger:focus:not(:active),html.theme--catppuccin-frappe .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .button.is-danger:active,html.theme--catppuccin-frappe .button.is-danger.is-active{background-color:#e36d6f;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger{background-color:#e78284;border-color:#e78284;box-shadow:none}html.theme--catppuccin-frappe .button.is-danger.is-inverted{background-color:#fff;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted:hover,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-frappe .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined{background-color:transparent;border-color:#e78284;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-outlined:hover,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-danger.is-outlined:focus,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-focused{background-color:#e78284;border-color:#e78284;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #e78284 #e78284 !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-frappe .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-outlined{background-color:transparent;border-color:#e78284;box-shadow:none;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#e78284}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #e78284 #e78284 !important}html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-frappe .button.is-danger.is-light{background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .button.is-danger.is-light:hover,html.theme--catppuccin-frappe .button.is-danger.is-light.is-hovered{background-color:#fae3e4;border-color:transparent;color:#9a1e20}html.theme--catppuccin-frappe .button.is-danger.is-light:active,html.theme--catppuccin-frappe .button.is-danger.is-light.is-active{background-color:#f8d8d9;border-color:transparent;color:#9a1e20}html.theme--catppuccin-frappe .button.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-frappe .button.is-small:not(.is-rounded),html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-frappe .button.is-normal{font-size:1rem}html.theme--catppuccin-frappe .button.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .button.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .button[disabled],fieldset[disabled] html.theme--catppuccin-frappe .button{background-color:#737994;border-color:#626880;box-shadow:none;opacity:.5}html.theme--catppuccin-frappe .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-frappe .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-frappe .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-frappe .button.is-static{background-color:#292c3c;border-color:#626880;color:#838ba7;box-shadow:none;pointer-events:none}html.theme--catppuccin-frappe .button.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-frappe .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-frappe .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-frappe .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-frappe .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-frappe .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-frappe .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-frappe .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-frappe .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-frappe .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-frappe .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-frappe .buttons.has-addons .button:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-frappe .buttons.has-addons .button:focus,html.theme--catppuccin-frappe .buttons.has-addons .button.is-focused,html.theme--catppuccin-frappe .buttons.has-addons .button:active,html.theme--catppuccin-frappe .buttons.has-addons .button.is-active,html.theme--catppuccin-frappe .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-frappe .buttons.has-addons .button:focus:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-frappe .buttons.has-addons .button:active:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-frappe .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-frappe .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .buttons.is-centered{justify-content:center}html.theme--catppuccin-frappe .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-frappe .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .button.is-responsive.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-frappe .button.is-responsive,html.theme--catppuccin-frappe .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-frappe .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-frappe .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .button.is-responsive.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-frappe .button.is-responsive,html.theme--catppuccin-frappe .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-frappe .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-frappe .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-frappe .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-frappe .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-frappe .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-frappe .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-frappe .content li+li{margin-top:0.25em}html.theme--catppuccin-frappe .content p:not(:last-child),html.theme--catppuccin-frappe .content dl:not(:last-child),html.theme--catppuccin-frappe .content ol:not(:last-child),html.theme--catppuccin-frappe .content ul:not(:last-child),html.theme--catppuccin-frappe .content blockquote:not(:last-child),html.theme--catppuccin-frappe .content pre:not(:last-child),html.theme--catppuccin-frappe .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-frappe .content h1,html.theme--catppuccin-frappe .content h2,html.theme--catppuccin-frappe .content h3,html.theme--catppuccin-frappe .content h4,html.theme--catppuccin-frappe .content h5,html.theme--catppuccin-frappe .content h6{color:#c6d0f5;font-weight:600;line-height:1.125}html.theme--catppuccin-frappe .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-frappe .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-frappe .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-frappe .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-frappe .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-frappe .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-frappe .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-frappe .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-frappe .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-frappe .content blockquote{background-color:#292c3c;border-left:5px solid #626880;padding:1.25em 1.5em}html.theme--catppuccin-frappe .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-frappe .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-frappe .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-frappe .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-frappe .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-frappe .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-frappe .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-frappe .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-frappe .content ul ul ul{list-style-type:square}html.theme--catppuccin-frappe .content dd{margin-left:2em}html.theme--catppuccin-frappe .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-frappe .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-frappe .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-frappe .content figure img{display:inline-block}html.theme--catppuccin-frappe .content figure figcaption{font-style:italic}html.theme--catppuccin-frappe .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-frappe .content sup,html.theme--catppuccin-frappe .content sub{font-size:75%}html.theme--catppuccin-frappe .content table{width:100%}html.theme--catppuccin-frappe .content table td,html.theme--catppuccin-frappe .content table th{border:1px solid #626880;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-frappe .content table th{color:#b0bef1}html.theme--catppuccin-frappe .content table th:not([align]){text-align:inherit}html.theme--catppuccin-frappe .content table thead td,html.theme--catppuccin-frappe .content table thead th{border-width:0 0 2px;color:#b0bef1}html.theme--catppuccin-frappe .content table tfoot td,html.theme--catppuccin-frappe .content table tfoot th{border-width:2px 0 0;color:#b0bef1}html.theme--catppuccin-frappe .content table tbody tr:last-child td,html.theme--catppuccin-frappe .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-frappe .content .tabs li+li{margin-top:0}html.theme--catppuccin-frappe .content.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-frappe .content.is-normal{font-size:1rem}html.theme--catppuccin-frappe .content.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .content.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-frappe .icon.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-frappe .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-frappe .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-frappe .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-frappe .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-frappe .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-frappe div.icon-text{display:flex}html.theme--catppuccin-frappe .image,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-frappe .image img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-frappe .image img.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-frappe .image.is-fullwidth,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-frappe .image.is-square img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-frappe .image.is-square .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-frappe .image.is-1by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-frappe .image.is-1by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-frappe .image.is-5by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-frappe .image.is-5by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-frappe .image.is-4by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-frappe .image.is-4by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-frappe .image.is-3by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-frappe .image.is-5by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-frappe .image.is-5by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-frappe .image.is-16by9 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-frappe .image.is-16by9 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-frappe .image.is-2by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-frappe .image.is-2by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-frappe .image.is-3by1 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-frappe .image.is-3by1 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-frappe .image.is-4by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-frappe .image.is-4by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-frappe .image.is-3by4 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-frappe .image.is-3by4 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-frappe .image.is-2by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-frappe .image.is-2by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-frappe .image.is-3by5 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-frappe .image.is-3by5 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-frappe .image.is-9by16 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-frappe .image.is-9by16 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-frappe .image.is-1by2 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-frappe .image.is-1by2 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-frappe .image.is-1by3 img,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-frappe .image.is-1by3 .has-ratio,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-frappe .image.is-square,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-frappe .image.is-1by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-frappe .image.is-5by4,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-frappe .image.is-4by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-frappe .image.is-3by2,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-frappe .image.is-5by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-frappe .image.is-16by9,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-frappe .image.is-2by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-frappe .image.is-3by1,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-frappe .image.is-4by5,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-frappe .image.is-3by4,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-frappe .image.is-2by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-frappe .image.is-3by5,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-frappe .image.is-9by16,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-frappe .image.is-1by2,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-frappe .image.is-1by3,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-frappe .image.is-16x16,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-frappe .image.is-24x24,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-frappe .image.is-32x32,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-frappe .image.is-48x48,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-frappe .image.is-64x64,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-frappe .image.is-96x96,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-frappe .image.is-128x128,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-frappe .notification{background-color:#292c3c;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-frappe .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-frappe .notification strong{color:currentColor}html.theme--catppuccin-frappe .notification code,html.theme--catppuccin-frappe .notification pre{background:#fff}html.theme--catppuccin-frappe .notification pre code{background:transparent}html.theme--catppuccin-frappe .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-frappe .notification .title,html.theme--catppuccin-frappe .notification .subtitle,html.theme--catppuccin-frappe .notification .content{color:currentColor}html.theme--catppuccin-frappe .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-dark,html.theme--catppuccin-frappe .content kbd.notification{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .notification.is-primary,html.theme--catppuccin-frappe .docstring>section>a.notification.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .notification.is-primary.is-light,html.theme--catppuccin-frappe .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .notification.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .notification.is-link.is-light{background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .notification.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-info.is-light{background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .notification.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-success.is-light{background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .notification.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .notification.is-warning.is-light{background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .notification.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .notification.is-danger.is-light{background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-frappe .progress::-webkit-progress-bar{background-color:#51576d}html.theme--catppuccin-frappe .progress::-webkit-progress-value{background-color:#838ba7}html.theme--catppuccin-frappe .progress::-moz-progress-bar{background-color:#838ba7}html.theme--catppuccin-frappe .progress::-ms-fill{background-color:#838ba7;border:none}html.theme--catppuccin-frappe .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-frappe .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-frappe .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-frappe .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-frappe .content kbd.progress::-webkit-progress-value{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-frappe .content kbd.progress::-moz-progress-bar{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark::-ms-fill,html.theme--catppuccin-frappe .content kbd.progress::-ms-fill{background-color:#414559}html.theme--catppuccin-frappe .progress.is-dark:indeterminate,html.theme--catppuccin-frappe .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #414559 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary::-ms-fill,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-primary:indeterminate,html.theme--catppuccin-frappe .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #8caaee 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-link::-webkit-progress-value{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link::-moz-progress-bar{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link::-ms-fill{background-color:#8caaee}html.theme--catppuccin-frappe .progress.is-link:indeterminate{background-image:linear-gradient(to right, #8caaee 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-info::-webkit-progress-value{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info::-moz-progress-bar{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info::-ms-fill{background-color:#81c8be}html.theme--catppuccin-frappe .progress.is-info:indeterminate{background-image:linear-gradient(to right, #81c8be 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-success::-webkit-progress-value{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success::-moz-progress-bar{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success::-ms-fill{background-color:#a6d189}html.theme--catppuccin-frappe .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6d189 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-warning::-webkit-progress-value{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning::-moz-progress-bar{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning::-ms-fill{background-color:#e5c890}html.theme--catppuccin-frappe .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #e5c890 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress.is-danger::-webkit-progress-value{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger::-moz-progress-bar{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger::-ms-fill{background-color:#e78284}html.theme--catppuccin-frappe .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #e78284 30%, #51576d 30%)}html.theme--catppuccin-frappe .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#51576d;background-image:linear-gradient(to right, #c6d0f5 30%, #51576d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-frappe .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-frappe .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-frappe .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-frappe .progress.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-frappe .progress.is-medium{height:1.25rem}html.theme--catppuccin-frappe .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-frappe .table{background-color:#51576d;color:#c6d0f5}html.theme--catppuccin-frappe .table td,html.theme--catppuccin-frappe .table th{border:1px solid #626880;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-frappe .table td.is-white,html.theme--catppuccin-frappe .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .table td.is-black,html.theme--catppuccin-frappe .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .table td.is-light,html.theme--catppuccin-frappe .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-dark,html.theme--catppuccin-frappe .table th.is-dark{background-color:#414559;border-color:#414559;color:#fff}html.theme--catppuccin-frappe .table td.is-primary,html.theme--catppuccin-frappe .table th.is-primary{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-link,html.theme--catppuccin-frappe .table th.is-link{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-info,html.theme--catppuccin-frappe .table th.is-info{background-color:#81c8be;border-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-success,html.theme--catppuccin-frappe .table th.is-success{background-color:#a6d189;border-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-warning,html.theme--catppuccin-frappe .table th.is-warning{background-color:#e5c890;border-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .table td.is-danger,html.theme--catppuccin-frappe .table th.is-danger{background-color:#e78284;border-color:#e78284;color:#fff}html.theme--catppuccin-frappe .table td.is-narrow,html.theme--catppuccin-frappe .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-frappe .table td.is-selected,html.theme--catppuccin-frappe .table th.is-selected{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table td.is-selected a,html.theme--catppuccin-frappe .table td.is-selected strong,html.theme--catppuccin-frappe .table th.is-selected a,html.theme--catppuccin-frappe .table th.is-selected strong{color:currentColor}html.theme--catppuccin-frappe .table td.is-vcentered,html.theme--catppuccin-frappe .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-frappe .table th{color:#b0bef1}html.theme--catppuccin-frappe .table th:not([align]){text-align:left}html.theme--catppuccin-frappe .table tr.is-selected{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .table tr.is-selected a,html.theme--catppuccin-frappe .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-frappe .table tr.is-selected td,html.theme--catppuccin-frappe .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-frappe .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table thead td,html.theme--catppuccin-frappe .table thead th{border-width:0 0 2px;color:#b0bef1}html.theme--catppuccin-frappe .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table tfoot td,html.theme--catppuccin-frappe .table tfoot th{border-width:2px 0 0;color:#b0bef1}html.theme--catppuccin-frappe .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .table tbody tr:last-child td,html.theme--catppuccin-frappe .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-frappe .table.is-bordered td,html.theme--catppuccin-frappe .table.is-bordered th{border-width:1px}html.theme--catppuccin-frappe .table.is-bordered tr:last-child td,html.theme--catppuccin-frappe .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-frappe .table.is-fullwidth{width:100%}html.theme--catppuccin-frappe .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#414559}html.theme--catppuccin-frappe .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#414559}html.theme--catppuccin-frappe .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#454a5f}html.theme--catppuccin-frappe .table.is-narrow td,html.theme--catppuccin-frappe .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-frappe .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#414559}html.theme--catppuccin-frappe .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-frappe .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .tags .tag,html.theme--catppuccin-frappe .tags .content kbd,html.theme--catppuccin-frappe .content .tags kbd,html.theme--catppuccin-frappe .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-frappe .tags .tag:not(:last-child),html.theme--catppuccin-frappe .tags .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags kbd:not(:last-child),html.theme--catppuccin-frappe .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-frappe .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-frappe .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-frappe .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-frappe .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-frappe .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-frappe .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-frappe .tags.is-centered{justify-content:center}html.theme--catppuccin-frappe .tags.is-centered .tag,html.theme--catppuccin-frappe .tags.is-centered .content kbd,html.theme--catppuccin-frappe .content .tags.is-centered kbd,html.theme--catppuccin-frappe .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-frappe .tags.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .tags.is-right .tag:not(:first-child),html.theme--catppuccin-frappe .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-frappe .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-frappe .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-frappe .tags.is-right .tag:not(:last-child),html.theme--catppuccin-frappe .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-frappe .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-frappe .tags.has-addons .tag,html.theme--catppuccin-frappe .tags.has-addons .content kbd,html.theme--catppuccin-frappe .content .tags.has-addons kbd,html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-frappe .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-frappe .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-frappe .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-frappe .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-frappe .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-frappe .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-frappe .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-frappe .tag:not(body),html.theme--catppuccin-frappe .content kbd:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#292c3c;border-radius:.4em;color:#c6d0f5;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-frappe .tag:not(body) .delete,html.theme--catppuccin-frappe .content kbd:not(body) .delete,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-frappe .tag.is-white:not(body),html.theme--catppuccin-frappe .content kbd.is-white:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .tag.is-black:not(body),html.theme--catppuccin-frappe .content kbd.is-black:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .tag.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-dark:not(body),html.theme--catppuccin-frappe .content kbd:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-frappe .content .docstring>section>kbd:not(body){background-color:#414559;color:#fff}html.theme--catppuccin-frappe .tag.is-primary:not(body),html.theme--catppuccin-frappe .content kbd.is-primary:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .tag.is-primary.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .tag.is-link:not(body),html.theme--catppuccin-frappe .content kbd.is-link:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .tag.is-link.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-link.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edf2fc;color:#153a8e}html.theme--catppuccin-frappe .tag.is-info:not(body),html.theme--catppuccin-frappe .content kbd.is-info:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-info.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-info.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#f1f9f8;color:#2d675f}html.theme--catppuccin-frappe .tag.is-success:not(body),html.theme--catppuccin-frappe .content kbd.is-success:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-success.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-success.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f4f9f0;color:#446a29}html.theme--catppuccin-frappe .tag.is-warning:not(body),html.theme--catppuccin-frappe .content kbd.is-warning:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .tag.is-warning.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fbf7ee;color:#78591c}html.theme--catppuccin-frappe .tag.is-danger:not(body),html.theme--catppuccin-frappe .content kbd.is-danger:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .tag.is-danger.is-light:not(body),html.theme--catppuccin-frappe .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fceeee;color:#9a1e20}html.theme--catppuccin-frappe .tag.is-normal:not(body),html.theme--catppuccin-frappe .content kbd.is-normal:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-frappe .tag.is-medium:not(body),html.theme--catppuccin-frappe .content kbd.is-medium:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-frappe .tag.is-large:not(body),html.theme--catppuccin-frappe .content kbd.is-large:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-frappe .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-frappe .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-frappe .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-frappe .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-frappe .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-frappe .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-frappe .tag.is-delete:not(body),html.theme--catppuccin-frappe .content kbd.is-delete:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-frappe .tag.is-delete:not(body)::before,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::before,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-frappe .tag.is-delete:not(body)::after,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::after,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-frappe .tag.is-delete:not(body)::before,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::before,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-frappe .tag.is-delete:not(body)::after,html.theme--catppuccin-frappe .content kbd.is-delete:not(body)::after,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-frappe .tag.is-delete:not(body):hover,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):hover,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-frappe .tag.is-delete:not(body):focus,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):focus,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1f212d}html.theme--catppuccin-frappe .tag.is-delete:not(body):active,html.theme--catppuccin-frappe .content kbd.is-delete:not(body):active,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#14161e}html.theme--catppuccin-frappe .tag.is-rounded:not(body),html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-frappe .content kbd.is-rounded:not(body),html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-frappe a.tag:hover,html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-frappe .title,html.theme--catppuccin-frappe .subtitle{word-break:break-word}html.theme--catppuccin-frappe .title em,html.theme--catppuccin-frappe .title span,html.theme--catppuccin-frappe .subtitle em,html.theme--catppuccin-frappe .subtitle span{font-weight:inherit}html.theme--catppuccin-frappe .title sub,html.theme--catppuccin-frappe .subtitle sub{font-size:.75em}html.theme--catppuccin-frappe .title sup,html.theme--catppuccin-frappe .subtitle sup{font-size:.75em}html.theme--catppuccin-frappe .title .tag,html.theme--catppuccin-frappe .title .content kbd,html.theme--catppuccin-frappe .content .title kbd,html.theme--catppuccin-frappe .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-frappe .subtitle .tag,html.theme--catppuccin-frappe .subtitle .content kbd,html.theme--catppuccin-frappe .content .subtitle kbd,html.theme--catppuccin-frappe .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-frappe .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-frappe .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-frappe .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-frappe .title.is-1{font-size:3rem}html.theme--catppuccin-frappe .title.is-2{font-size:2.5rem}html.theme--catppuccin-frappe .title.is-3{font-size:2rem}html.theme--catppuccin-frappe .title.is-4{font-size:1.5rem}html.theme--catppuccin-frappe .title.is-5{font-size:1.25rem}html.theme--catppuccin-frappe .title.is-6{font-size:1rem}html.theme--catppuccin-frappe .title.is-7{font-size:.75rem}html.theme--catppuccin-frappe .subtitle{color:#737994;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-frappe .subtitle strong{color:#737994;font-weight:600}html.theme--catppuccin-frappe .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-frappe .subtitle.is-1{font-size:3rem}html.theme--catppuccin-frappe .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-frappe .subtitle.is-3{font-size:2rem}html.theme--catppuccin-frappe .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-frappe .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-frappe .subtitle.is-6{font-size:1rem}html.theme--catppuccin-frappe .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-frappe .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-frappe .number{align-items:center;background-color:#292c3c;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{background-color:#303446;border-color:#626880;border-radius:.4em;color:#838ba7}html.theme--catppuccin-frappe .select select::-moz-placeholder,html.theme--catppuccin-frappe .textarea::-moz-placeholder,html.theme--catppuccin-frappe .input::-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select::-webkit-input-placeholder,html.theme--catppuccin-frappe .textarea::-webkit-input-placeholder,html.theme--catppuccin-frappe .input::-webkit-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:-moz-placeholder,html.theme--catppuccin-frappe .textarea:-moz-placeholder,html.theme--catppuccin-frappe .input:-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:-ms-input-placeholder,html.theme--catppuccin-frappe .textarea:-ms-input-placeholder,html.theme--catppuccin-frappe .input:-ms-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-frappe .select select:hover,html.theme--catppuccin-frappe .textarea:hover,html.theme--catppuccin-frappe .input:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-frappe .select select.is-hovered,html.theme--catppuccin-frappe .is-hovered.textarea,html.theme--catppuccin-frappe .is-hovered.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#737994}html.theme--catppuccin-frappe .select select:focus,html.theme--catppuccin-frappe .textarea:focus,html.theme--catppuccin-frappe .input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-frappe .select select.is-focused,html.theme--catppuccin-frappe .is-focused.textarea,html.theme--catppuccin-frappe .is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .select select:active,html.theme--catppuccin-frappe .textarea:active,html.theme--catppuccin-frappe .input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-frappe .select select.is-active,html.theme--catppuccin-frappe .is-active.textarea,html.theme--catppuccin-frappe .is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#8caaee;box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select select[disabled],html.theme--catppuccin-frappe .textarea[disabled],html.theme--catppuccin-frappe .input[disabled],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-frappe .select select,fieldset[disabled] html.theme--catppuccin-frappe .textarea,fieldset[disabled] html.theme--catppuccin-frappe .input,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{background-color:#737994;border-color:#292c3c;box-shadow:none;color:#f1f4fd}html.theme--catppuccin-frappe .select select[disabled]::-moz-placeholder,html.theme--catppuccin-frappe .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-frappe .input[disabled]::-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]:-moz-placeholder,html.theme--catppuccin-frappe .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-frappe .input[disabled]:-moz-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(241,244,253,0.3)}html.theme--catppuccin-frappe .textarea,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-frappe .textarea[readonly],html.theme--catppuccin-frappe .input[readonly],html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-frappe .is-white.textarea,html.theme--catppuccin-frappe .is-white.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-frappe .is-white.textarea:focus,html.theme--catppuccin-frappe .is-white.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-frappe .is-white.is-focused.textarea,html.theme--catppuccin-frappe .is-white.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-white.textarea:active,html.theme--catppuccin-frappe .is-white.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-frappe .is-white.is-active.textarea,html.theme--catppuccin-frappe .is-white.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .is-black.textarea,html.theme--catppuccin-frappe .is-black.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-frappe .is-black.textarea:focus,html.theme--catppuccin-frappe .is-black.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-frappe .is-black.is-focused.textarea,html.theme--catppuccin-frappe .is-black.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-black.textarea:active,html.theme--catppuccin-frappe .is-black.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-frappe .is-black.is-active.textarea,html.theme--catppuccin-frappe .is-black.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .is-light.textarea,html.theme--catppuccin-frappe .is-light.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-frappe .is-light.textarea:focus,html.theme--catppuccin-frappe .is-light.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-frappe .is-light.is-focused.textarea,html.theme--catppuccin-frappe .is-light.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-light.textarea:active,html.theme--catppuccin-frappe .is-light.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-frappe .is-light.is-active.textarea,html.theme--catppuccin-frappe .is-light.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .is-dark.textarea,html.theme--catppuccin-frappe .content kbd.textarea,html.theme--catppuccin-frappe .is-dark.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-frappe .content kbd.input{border-color:#414559}html.theme--catppuccin-frappe .is-dark.textarea:focus,html.theme--catppuccin-frappe .content kbd.textarea:focus,html.theme--catppuccin-frappe .is-dark.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-frappe .content kbd.input:focus,html.theme--catppuccin-frappe .is-dark.is-focused.textarea,html.theme--catppuccin-frappe .content kbd.is-focused.textarea,html.theme--catppuccin-frappe .is-dark.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .content kbd.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-dark.textarea:active,html.theme--catppuccin-frappe .content kbd.textarea:active,html.theme--catppuccin-frappe .is-dark.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-frappe .content kbd.input:active,html.theme--catppuccin-frappe .is-dark.is-active.textarea,html.theme--catppuccin-frappe .content kbd.is-active.textarea,html.theme--catppuccin-frappe .is-dark.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .content kbd.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .is-primary.textarea,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink{border-color:#8caaee}html.theme--catppuccin-frappe .is-primary.textarea:focus,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-frappe .is-primary.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-frappe .is-primary.is-focused.textarea,html.theme--catppuccin-frappe .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.textarea:active,html.theme--catppuccin-frappe .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-frappe .is-primary.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-frappe .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-frappe .is-primary.is-active.textarea,html.theme--catppuccin-frappe .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-frappe .is-primary.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-frappe .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .is-link.textarea,html.theme--catppuccin-frappe .is-link.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#8caaee}html.theme--catppuccin-frappe .is-link.textarea:focus,html.theme--catppuccin-frappe .is-link.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-frappe .is-link.is-focused.textarea,html.theme--catppuccin-frappe .is-link.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-link.textarea:active,html.theme--catppuccin-frappe .is-link.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-frappe .is-link.is-active.textarea,html.theme--catppuccin-frappe .is-link.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .is-info.textarea,html.theme--catppuccin-frappe .is-info.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#81c8be}html.theme--catppuccin-frappe .is-info.textarea:focus,html.theme--catppuccin-frappe .is-info.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-frappe .is-info.is-focused.textarea,html.theme--catppuccin-frappe .is-info.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-info.textarea:active,html.theme--catppuccin-frappe .is-info.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-frappe .is-info.is-active.textarea,html.theme--catppuccin-frappe .is-info.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .is-success.textarea,html.theme--catppuccin-frappe .is-success.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6d189}html.theme--catppuccin-frappe .is-success.textarea:focus,html.theme--catppuccin-frappe .is-success.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-frappe .is-success.is-focused.textarea,html.theme--catppuccin-frappe .is-success.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-success.textarea:active,html.theme--catppuccin-frappe .is-success.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-frappe .is-success.is-active.textarea,html.theme--catppuccin-frappe .is-success.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .is-warning.textarea,html.theme--catppuccin-frappe .is-warning.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#e5c890}html.theme--catppuccin-frappe .is-warning.textarea:focus,html.theme--catppuccin-frappe .is-warning.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-frappe .is-warning.is-focused.textarea,html.theme--catppuccin-frappe .is-warning.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-warning.textarea:active,html.theme--catppuccin-frappe .is-warning.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-frappe .is-warning.is-active.textarea,html.theme--catppuccin-frappe .is-warning.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .is-danger.textarea,html.theme--catppuccin-frappe .is-danger.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#e78284}html.theme--catppuccin-frappe .is-danger.textarea:focus,html.theme--catppuccin-frappe .is-danger.input:focus,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-frappe .is-danger.is-focused.textarea,html.theme--catppuccin-frappe .is-danger.is-focused.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-frappe .is-danger.textarea:active,html.theme--catppuccin-frappe .is-danger.input:active,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-frappe .is-danger.is-active.textarea,html.theme--catppuccin-frappe .is-danger.is-active.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .is-small.textarea,html.theme--catppuccin-frappe .is-small.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-frappe .is-medium.textarea,html.theme--catppuccin-frappe .is-medium.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .is-large.textarea,html.theme--catppuccin-frappe .is-large.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .is-fullwidth.textarea,html.theme--catppuccin-frappe .is-fullwidth.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-frappe .is-inline.textarea,html.theme--catppuccin-frappe .is-inline.input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-frappe .input.is-rounded,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-frappe .input.is-static,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-frappe .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-frappe .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-frappe .textarea[rows]{height:initial}html.theme--catppuccin-frappe .textarea.has-fixed-size{resize:none}html.theme--catppuccin-frappe .radio,html.theme--catppuccin-frappe .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-frappe .radio input,html.theme--catppuccin-frappe .checkbox input{cursor:pointer}html.theme--catppuccin-frappe .radio:hover,html.theme--catppuccin-frappe .checkbox:hover{color:#99d1db}html.theme--catppuccin-frappe .radio[disabled],html.theme--catppuccin-frappe .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-frappe .radio,fieldset[disabled] html.theme--catppuccin-frappe .checkbox,html.theme--catppuccin-frappe .radio input[disabled],html.theme--catppuccin-frappe .checkbox input[disabled]{color:#f1f4fd;cursor:not-allowed}html.theme--catppuccin-frappe .radio+.radio{margin-left:.5em}html.theme--catppuccin-frappe .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-frappe .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading)::after{border-color:#8caaee;right:1.125em;z-index:4}html.theme--catppuccin-frappe .select.is-rounded select,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-frappe .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-frappe .select select::-ms-expand{display:none}html.theme--catppuccin-frappe .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-frappe .select select:hover{border-color:#292c3c}html.theme--catppuccin-frappe .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-frappe .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-frappe .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-frappe .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#99d1db}html.theme--catppuccin-frappe .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-frappe .select.is-white select{border-color:#fff}html.theme--catppuccin-frappe .select.is-white select:hover,html.theme--catppuccin-frappe .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-frappe .select.is-white select:focus,html.theme--catppuccin-frappe .select.is-white select.is-focused,html.theme--catppuccin-frappe .select.is-white select:active,html.theme--catppuccin-frappe .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-frappe .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-frappe .select.is-black select:hover,html.theme--catppuccin-frappe .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-frappe .select.is-black select:focus,html.theme--catppuccin-frappe .select.is-black select.is-focused,html.theme--catppuccin-frappe .select.is-black select:active,html.theme--catppuccin-frappe .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-frappe .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-frappe .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-frappe .select.is-light select:hover,html.theme--catppuccin-frappe .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-frappe .select.is-light select:focus,html.theme--catppuccin-frappe .select.is-light select.is-focused,html.theme--catppuccin-frappe .select.is-light select:active,html.theme--catppuccin-frappe .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-frappe .select.is-dark:not(:hover)::after,html.theme--catppuccin-frappe .content kbd.select:not(:hover)::after{border-color:#414559}html.theme--catppuccin-frappe .select.is-dark select,html.theme--catppuccin-frappe .content kbd.select select{border-color:#414559}html.theme--catppuccin-frappe .select.is-dark select:hover,html.theme--catppuccin-frappe .content kbd.select select:hover,html.theme--catppuccin-frappe .select.is-dark select.is-hovered,html.theme--catppuccin-frappe .content kbd.select select.is-hovered{border-color:#363a4a}html.theme--catppuccin-frappe .select.is-dark select:focus,html.theme--catppuccin-frappe .content kbd.select select:focus,html.theme--catppuccin-frappe .select.is-dark select.is-focused,html.theme--catppuccin-frappe .content kbd.select select.is-focused,html.theme--catppuccin-frappe .select.is-dark select:active,html.theme--catppuccin-frappe .content kbd.select select:active,html.theme--catppuccin-frappe .select.is-dark select.is-active,html.theme--catppuccin-frappe .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(65,69,89,0.25)}html.theme--catppuccin-frappe .select.is-primary:not(:hover)::after,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-primary select,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-primary select:hover,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-frappe .select.is-primary select.is-hovered,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#769aeb}html.theme--catppuccin-frappe .select.is-primary select:focus,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-frappe .select.is-primary select.is-focused,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-frappe .select.is-primary select:active,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-frappe .select.is-primary select.is-active,html.theme--catppuccin-frappe .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select.is-link:not(:hover)::after{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-link select{border-color:#8caaee}html.theme--catppuccin-frappe .select.is-link select:hover,html.theme--catppuccin-frappe .select.is-link select.is-hovered{border-color:#769aeb}html.theme--catppuccin-frappe .select.is-link select:focus,html.theme--catppuccin-frappe .select.is-link select.is-focused,html.theme--catppuccin-frappe .select.is-link select:active,html.theme--catppuccin-frappe .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(140,170,238,0.25)}html.theme--catppuccin-frappe .select.is-info:not(:hover)::after{border-color:#81c8be}html.theme--catppuccin-frappe .select.is-info select{border-color:#81c8be}html.theme--catppuccin-frappe .select.is-info select:hover,html.theme--catppuccin-frappe .select.is-info select.is-hovered{border-color:#6fc0b5}html.theme--catppuccin-frappe .select.is-info select:focus,html.theme--catppuccin-frappe .select.is-info select.is-focused,html.theme--catppuccin-frappe .select.is-info select:active,html.theme--catppuccin-frappe .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(129,200,190,0.25)}html.theme--catppuccin-frappe .select.is-success:not(:hover)::after{border-color:#a6d189}html.theme--catppuccin-frappe .select.is-success select{border-color:#a6d189}html.theme--catppuccin-frappe .select.is-success select:hover,html.theme--catppuccin-frappe .select.is-success select.is-hovered{border-color:#98ca77}html.theme--catppuccin-frappe .select.is-success select:focus,html.theme--catppuccin-frappe .select.is-success select.is-focused,html.theme--catppuccin-frappe .select.is-success select:active,html.theme--catppuccin-frappe .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,209,137,0.25)}html.theme--catppuccin-frappe .select.is-warning:not(:hover)::after{border-color:#e5c890}html.theme--catppuccin-frappe .select.is-warning select{border-color:#e5c890}html.theme--catppuccin-frappe .select.is-warning select:hover,html.theme--catppuccin-frappe .select.is-warning select.is-hovered{border-color:#e0be7b}html.theme--catppuccin-frappe .select.is-warning select:focus,html.theme--catppuccin-frappe .select.is-warning select.is-focused,html.theme--catppuccin-frappe .select.is-warning select:active,html.theme--catppuccin-frappe .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(229,200,144,0.25)}html.theme--catppuccin-frappe .select.is-danger:not(:hover)::after{border-color:#e78284}html.theme--catppuccin-frappe .select.is-danger select{border-color:#e78284}html.theme--catppuccin-frappe .select.is-danger select:hover,html.theme--catppuccin-frappe .select.is-danger select.is-hovered{border-color:#e36d6f}html.theme--catppuccin-frappe .select.is-danger select:focus,html.theme--catppuccin-frappe .select.is-danger select.is-focused,html.theme--catppuccin-frappe .select.is-danger select:active,html.theme--catppuccin-frappe .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(231,130,132,0.25)}html.theme--catppuccin-frappe .select.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-frappe .select.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .select.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .select.is-disabled::after{border-color:#f1f4fd !important;opacity:0.5}html.theme--catppuccin-frappe .select.is-fullwidth{width:100%}html.theme--catppuccin-frappe .select.is-fullwidth select{width:100%}html.theme--catppuccin-frappe .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-frappe .select.is-loading.is-small:after,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-frappe .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-frappe .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-frappe .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-frappe .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:hover .file-cta,html.theme--catppuccin-frappe .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:focus .file-cta,html.theme--catppuccin-frappe .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-frappe .file.is-white:active .file-cta,html.theme--catppuccin-frappe .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-frappe .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-black:hover .file-cta,html.theme--catppuccin-frappe .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-black:focus .file-cta,html.theme--catppuccin-frappe .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-black:active .file-cta,html.theme--catppuccin-frappe .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:hover .file-cta,html.theme--catppuccin-frappe .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:focus .file-cta,html.theme--catppuccin-frappe .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-light:active .file-cta,html.theme--catppuccin-frappe .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-dark .file-cta,html.theme--catppuccin-frappe .content kbd.file .file-cta{background-color:#414559;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-dark:hover .file-cta,html.theme--catppuccin-frappe .content kbd.file:hover .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-hovered .file-cta{background-color:#3c3f52;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-dark:focus .file-cta,html.theme--catppuccin-frappe .content kbd.file:focus .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-focused .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(65,69,89,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-dark:active .file-cta,html.theme--catppuccin-frappe .content kbd.file:active .file-cta,html.theme--catppuccin-frappe .file.is-dark.is-active .file-cta,html.theme--catppuccin-frappe .content kbd.file.is-active .file-cta{background-color:#363a4a;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary:hover .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-primary:focus .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-focused .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(140,170,238,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-primary:active .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-frappe .file.is-primary.is-active .file-cta,html.theme--catppuccin-frappe .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link .file-cta{background-color:#8caaee;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link:hover .file-cta,html.theme--catppuccin-frappe .file.is-link.is-hovered .file-cta{background-color:#81a2ec;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-link:focus .file-cta,html.theme--catppuccin-frappe .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(140,170,238,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-link:active .file-cta,html.theme--catppuccin-frappe .file.is-link.is-active .file-cta{background-color:#769aeb;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-info .file-cta{background-color:#81c8be;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:hover .file-cta,html.theme--catppuccin-frappe .file.is-info.is-hovered .file-cta{background-color:#78c4b9;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:focus .file-cta,html.theme--catppuccin-frappe .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(129,200,190,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-info:active .file-cta,html.theme--catppuccin-frappe .file.is-info.is-active .file-cta{background-color:#6fc0b5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success .file-cta{background-color:#a6d189;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:hover .file-cta,html.theme--catppuccin-frappe .file.is-success.is-hovered .file-cta{background-color:#9fcd80;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:focus .file-cta,html.theme--catppuccin-frappe .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,209,137,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-success:active .file-cta,html.theme--catppuccin-frappe .file.is-success.is-active .file-cta{background-color:#98ca77;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning .file-cta{background-color:#e5c890;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:hover .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-hovered .file-cta{background-color:#e3c386;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:focus .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(229,200,144,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-warning:active .file-cta,html.theme--catppuccin-frappe .file.is-warning.is-active .file-cta{background-color:#e0be7b;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .file.is-danger .file-cta{background-color:#e78284;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-danger:hover .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-hovered .file-cta{background-color:#e57779;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-danger:focus .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(231,130,132,0.25);color:#fff}html.theme--catppuccin-frappe .file.is-danger:active .file-cta,html.theme--catppuccin-frappe .file.is-danger.is-active .file-cta{background-color:#e36d6f;border-color:transparent;color:#fff}html.theme--catppuccin-frappe .file.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-frappe .file.is-normal{font-size:1rem}html.theme--catppuccin-frappe .file.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-frappe .file.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-frappe .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-frappe .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-frappe .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-frappe .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-frappe .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-frappe .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-frappe .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-frappe .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-frappe .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-frappe .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-frappe .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-frappe .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-frappe .file.is-centered{justify-content:center}html.theme--catppuccin-frappe .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-frappe .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-frappe .file.is-right{justify-content:flex-end}html.theme--catppuccin-frappe .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-frappe .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-frappe .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-frappe .file-label:hover .file-cta{background-color:#3c3f52;color:#b0bef1}html.theme--catppuccin-frappe .file-label:hover .file-name{border-color:#5c6279}html.theme--catppuccin-frappe .file-label:active .file-cta{background-color:#363a4a;color:#b0bef1}html.theme--catppuccin-frappe .file-label:active .file-name{border-color:#575c72}html.theme--catppuccin-frappe .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-frappe .file-cta,html.theme--catppuccin-frappe .file-name{border-color:#626880;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-frappe .file-cta{background-color:#414559;color:#c6d0f5}html.theme--catppuccin-frappe .file-name{border-color:#626880;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-frappe .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-frappe .file-icon .fa{font-size:14px}html.theme--catppuccin-frappe .label{color:#b0bef1;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-frappe .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-frappe .label.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-frappe .label.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .label.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-frappe .help.is-white{color:#fff}html.theme--catppuccin-frappe .help.is-black{color:#0a0a0a}html.theme--catppuccin-frappe .help.is-light{color:#f5f5f5}html.theme--catppuccin-frappe .help.is-dark,html.theme--catppuccin-frappe .content kbd.help{color:#414559}html.theme--catppuccin-frappe .help.is-primary,html.theme--catppuccin-frappe .docstring>section>a.help.docs-sourcelink{color:#8caaee}html.theme--catppuccin-frappe .help.is-link{color:#8caaee}html.theme--catppuccin-frappe .help.is-info{color:#81c8be}html.theme--catppuccin-frappe .help.is-success{color:#a6d189}html.theme--catppuccin-frappe .help.is-warning{color:#e5c890}html.theme--catppuccin-frappe .help.is-danger{color:#e78284}html.theme--catppuccin-frappe .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-frappe .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-frappe .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-frappe .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-frappe .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-frappe .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-frappe .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-frappe .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-frappe .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-frappe .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-frappe .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-frappe .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-frappe .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field.is-horizontal{display:flex}}html.theme--catppuccin-frappe .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-frappe .field-label.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-frappe .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-frappe .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-frappe .field-body .field{margin-bottom:0}html.theme--catppuccin-frappe .field-body>.field{flex-shrink:1}html.theme--catppuccin-frappe .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-frappe .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-frappe .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-frappe .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select:focus~.icon{color:#414559}html.theme--catppuccin-frappe .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-frappe .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-frappe .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-frappe .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-frappe .control.has-icons-left .icon,html.theme--catppuccin-frappe .control.has-icons-right .icon{color:#626880;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-frappe .control.has-icons-left .input,html.theme--catppuccin-frappe .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-frappe .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-frappe .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-frappe .control.has-icons-right .input,html.theme--catppuccin-frappe .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-frappe .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-frappe .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-frappe .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-frappe .control.is-loading.is-small:after,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-frappe .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-frappe .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-frappe .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-frappe .breadcrumb a{align-items:center;color:#8caaee;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-frappe .breadcrumb a:hover{color:#99d1db}html.theme--catppuccin-frappe .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-frappe .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-frappe .breadcrumb li.is-active a{color:#b0bef1;cursor:default;pointer-events:none}html.theme--catppuccin-frappe .breadcrumb li+li::before{color:#737994;content:"\0002f"}html.theme--catppuccin-frappe .breadcrumb ul,html.theme--catppuccin-frappe .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-frappe .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-frappe .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-frappe .breadcrumb.is-centered ol,html.theme--catppuccin-frappe .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-frappe .breadcrumb.is-right ol,html.theme--catppuccin-frappe .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-frappe .breadcrumb.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-frappe .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-frappe .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-frappe .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-frappe .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-frappe .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#c6d0f5;max-width:100%;position:relative}html.theme--catppuccin-frappe .card-footer:first-child,html.theme--catppuccin-frappe .card-content:first-child,html.theme--catppuccin-frappe .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-frappe .card-footer:last-child,html.theme--catppuccin-frappe .card-content:last-child,html.theme--catppuccin-frappe .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-frappe .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-frappe .card-header-title{align-items:center;color:#b0bef1;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-frappe .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-frappe .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-frappe .card-image{display:block;position:relative}html.theme--catppuccin-frappe .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-frappe .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-frappe .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-frappe .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-frappe .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-frappe .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-frappe .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-frappe .dropdown.is-active .dropdown-menu,html.theme--catppuccin-frappe .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-frappe .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-frappe .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-frappe .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-frappe .dropdown-content{background-color:#292c3c;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-frappe .dropdown-item{color:#c6d0f5;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-frappe a.dropdown-item,html.theme--catppuccin-frappe button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-frappe a.dropdown-item:hover,html.theme--catppuccin-frappe button.dropdown-item:hover{background-color:#292c3c;color:#0a0a0a}html.theme--catppuccin-frappe a.dropdown-item.is-active,html.theme--catppuccin-frappe button.dropdown-item.is-active{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-frappe .level{align-items:center;justify-content:space-between}html.theme--catppuccin-frappe .level code{border-radius:.4em}html.theme--catppuccin-frappe .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-frappe .level.is-mobile{display:flex}html.theme--catppuccin-frappe .level.is-mobile .level-left,html.theme--catppuccin-frappe .level.is-mobile .level-right{display:flex}html.theme--catppuccin-frappe .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-frappe .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-frappe .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level{display:flex}html.theme--catppuccin-frappe .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-frappe .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-frappe .level-item .title,html.theme--catppuccin-frappe .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-frappe .level-left,html.theme--catppuccin-frappe .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .level-left .level-item.is-flexible,html.theme--catppuccin-frappe .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-left .level-item:not(:last-child),html.theme--catppuccin-frappe .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-frappe .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-left{display:flex}}html.theme--catppuccin-frappe .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .level-right{display:flex}}html.theme--catppuccin-frappe .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-frappe .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-frappe .media .media{border-top:1px solid rgba(98,104,128,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-frappe .media .media .content:not(:last-child),html.theme--catppuccin-frappe .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-frappe .media .media .media{padding-top:.5rem}html.theme--catppuccin-frappe .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-frappe .media+.media{border-top:1px solid rgba(98,104,128,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-frappe .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-frappe .media-left,html.theme--catppuccin-frappe .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .media-left{margin-right:1rem}html.theme--catppuccin-frappe .media-right{margin-left:1rem}html.theme--catppuccin-frappe .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .media-content{overflow-x:auto}}html.theme--catppuccin-frappe .menu{font-size:1rem}html.theme--catppuccin-frappe .menu.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-frappe .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .menu.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .menu-list{line-height:1.25}html.theme--catppuccin-frappe .menu-list a{border-radius:3px;color:#c6d0f5;display:block;padding:0.5em 0.75em}html.theme--catppuccin-frappe .menu-list a:hover{background-color:#292c3c;color:#b0bef1}html.theme--catppuccin-frappe .menu-list a.is-active{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .menu-list li ul{border-left:1px solid #626880;margin:.75em;padding-left:.75em}html.theme--catppuccin-frappe .menu-label{color:#f1f4fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-frappe .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-frappe .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-frappe .message{background-color:#292c3c;border-radius:.4em;font-size:1rem}html.theme--catppuccin-frappe .message strong{color:currentColor}html.theme--catppuccin-frappe .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-frappe .message.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-frappe .message.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .message.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .message.is-white{background-color:#fff}html.theme--catppuccin-frappe .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-frappe .message.is-black{background-color:#fafafa}html.theme--catppuccin-frappe .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-frappe .message.is-light{background-color:#fafafa}html.theme--catppuccin-frappe .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-frappe .message.is-dark,html.theme--catppuccin-frappe .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-frappe .message.is-dark .message-header,html.theme--catppuccin-frappe .content kbd.message .message-header{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .message.is-dark .message-body,html.theme--catppuccin-frappe .content kbd.message .message-body{border-color:#414559}html.theme--catppuccin-frappe .message.is-primary,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink{background-color:#edf2fc}html.theme--catppuccin-frappe .message.is-primary .message-header,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink .message-header{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .message.is-primary .message-body,html.theme--catppuccin-frappe .docstring>section>a.message.docs-sourcelink .message-body{border-color:#8caaee;color:#153a8e}html.theme--catppuccin-frappe .message.is-link{background-color:#edf2fc}html.theme--catppuccin-frappe .message.is-link .message-header{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .message.is-link .message-body{border-color:#8caaee;color:#153a8e}html.theme--catppuccin-frappe .message.is-info{background-color:#f1f9f8}html.theme--catppuccin-frappe .message.is-info .message-header{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-info .message-body{border-color:#81c8be;color:#2d675f}html.theme--catppuccin-frappe .message.is-success{background-color:#f4f9f0}html.theme--catppuccin-frappe .message.is-success .message-header{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-success .message-body{border-color:#a6d189;color:#446a29}html.theme--catppuccin-frappe .message.is-warning{background-color:#fbf7ee}html.theme--catppuccin-frappe .message.is-warning .message-header{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .message.is-warning .message-body{border-color:#e5c890;color:#78591c}html.theme--catppuccin-frappe .message.is-danger{background-color:#fceeee}html.theme--catppuccin-frappe .message.is-danger .message-header{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .message.is-danger .message-body{border-color:#e78284;color:#9a1e20}html.theme--catppuccin-frappe .message-header{align-items:center;background-color:#c6d0f5;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-frappe .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-frappe .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-frappe .message-body{border-color:#626880;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#c6d0f5;padding:1.25em 1.5em}html.theme--catppuccin-frappe .message-body code,html.theme--catppuccin-frappe .message-body pre{background-color:#fff}html.theme--catppuccin-frappe .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-frappe .modal.is-active{display:flex}html.theme--catppuccin-frappe .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-frappe .modal-content,html.theme--catppuccin-frappe .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-frappe .modal-content,html.theme--catppuccin-frappe .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-frappe .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-frappe .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-frappe .modal-card-head,html.theme--catppuccin-frappe .modal-card-foot{align-items:center;background-color:#292c3c;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-frappe .modal-card-head{border-bottom:1px solid #626880;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-frappe .modal-card-title{color:#c6d0f5;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-frappe .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #626880}html.theme--catppuccin-frappe .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-frappe .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#303446;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-frappe .navbar{background-color:#8caaee;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-frappe .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-frappe .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-frappe .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-frappe .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-dark,html.theme--catppuccin-frappe .content kbd.navbar{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-burger,html.theme--catppuccin-frappe .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-frappe .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#414559;color:#fff}}html.theme--catppuccin-frappe .navbar.is-primary,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-burger,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee;color:#fff}}html.theme--catppuccin-frappe .navbar.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee;color:#fff}}html.theme--catppuccin-frappe .navbar.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#81c8be;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6d189;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#e5c890;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-frappe .navbar.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-frappe .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#e78284;color:#fff}}html.theme--catppuccin-frappe .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-frappe .navbar.has-shadow{box-shadow:0 2px 0 0 #292c3c}html.theme--catppuccin-frappe .navbar.is-fixed-bottom,html.theme--catppuccin-frappe .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #292c3c}html.theme--catppuccin-frappe .navbar.is-fixed-top{top:0}html.theme--catppuccin-frappe html.has-navbar-fixed-top,html.theme--catppuccin-frappe body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-frappe .navbar-brand,html.theme--catppuccin-frappe .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-frappe .navbar-brand a.navbar-item:focus,html.theme--catppuccin-frappe .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-frappe .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-frappe .navbar-burger{color:#c6d0f5;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-frappe .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-frappe .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-frappe .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-frappe .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-frappe .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-frappe .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-frappe .navbar-menu{display:none}html.theme--catppuccin-frappe .navbar-item,html.theme--catppuccin-frappe .navbar-link{color:#c6d0f5;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-frappe .navbar-item .icon:only-child,html.theme--catppuccin-frappe .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-frappe a.navbar-item,html.theme--catppuccin-frappe .navbar-link{cursor:pointer}html.theme--catppuccin-frappe a.navbar-item:focus,html.theme--catppuccin-frappe a.navbar-item:focus-within,html.theme--catppuccin-frappe a.navbar-item:hover,html.theme--catppuccin-frappe a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar-link:focus,html.theme--catppuccin-frappe .navbar-link:focus-within,html.theme--catppuccin-frappe .navbar-link:hover,html.theme--catppuccin-frappe .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#8caaee}html.theme--catppuccin-frappe .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .navbar-item img{max-height:1.75rem}html.theme--catppuccin-frappe .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-frappe .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-frappe .navbar-item.is-tab:focus,html.theme--catppuccin-frappe .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#8caaee}html.theme--catppuccin-frappe .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#8caaee;border-bottom-style:solid;border-bottom-width:3px;color:#8caaee;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-frappe .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-frappe .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-frappe .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-frappe .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-frappe .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .navbar>.container{display:block}html.theme--catppuccin-frappe .navbar-brand .navbar-item,html.theme--catppuccin-frappe .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-frappe .navbar-link::after{display:none}html.theme--catppuccin-frappe .navbar-menu{background-color:#8caaee;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-frappe .navbar-menu.is-active{display:block}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch,html.theme--catppuccin-frappe .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-frappe .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-frappe .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-frappe html.has-navbar-fixed-top-touch,html.theme--catppuccin-frappe body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .navbar,html.theme--catppuccin-frappe .navbar-menu,html.theme--catppuccin-frappe .navbar-start,html.theme--catppuccin-frappe .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-frappe .navbar{min-height:4rem}html.theme--catppuccin-frappe .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-frappe .navbar.is-spaced .navbar-start,html.theme--catppuccin-frappe .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-frappe .navbar.is-spaced a.navbar-item,html.theme--catppuccin-frappe .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-frappe .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#838ba7}html.theme--catppuccin-frappe .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8caaee}html.theme--catppuccin-frappe .navbar-burger{display:none}html.theme--catppuccin-frappe .navbar-item,html.theme--catppuccin-frappe .navbar-link{align-items:center;display:flex}html.theme--catppuccin-frappe .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-frappe .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-frappe .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-frappe .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-frappe .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-frappe .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-frappe .navbar-dropdown{background-color:#8caaee;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-frappe .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#838ba7}html.theme--catppuccin-frappe .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8caaee}.navbar.is-spaced html.theme--catppuccin-frappe .navbar-dropdown,html.theme--catppuccin-frappe .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-frappe .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-frappe .navbar-divider{display:block}html.theme--catppuccin-frappe .navbar>.container .navbar-brand,html.theme--catppuccin-frappe .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-frappe .navbar>.container .navbar-menu,html.theme--catppuccin-frappe .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-frappe .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-frappe .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-frappe html.has-navbar-fixed-top-desktop,html.theme--catppuccin-frappe body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-frappe html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-frappe body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-frappe html.has-spaced-navbar-fixed-top,html.theme--catppuccin-frappe body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-frappe html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-frappe body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-frappe a.navbar-item.is-active,html.theme--catppuccin-frappe .navbar-link.is-active{color:#8caaee}html.theme--catppuccin-frappe a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-frappe .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-frappe .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-frappe .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-frappe .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-frappe .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-frappe .pagination.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-frappe .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .pagination.is-rounded .pagination-previous,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-frappe .pagination.is-rounded .pagination-next,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-frappe .pagination.is-rounded .pagination-link,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-frappe .pagination,html.theme--catppuccin-frappe .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link{border-color:#626880;color:#8caaee;min-width:2.5em}html.theme--catppuccin-frappe .pagination-previous:hover,html.theme--catppuccin-frappe .pagination-next:hover,html.theme--catppuccin-frappe .pagination-link:hover{border-color:#737994;color:#99d1db}html.theme--catppuccin-frappe .pagination-previous:focus,html.theme--catppuccin-frappe .pagination-next:focus,html.theme--catppuccin-frappe .pagination-link:focus{border-color:#737994}html.theme--catppuccin-frappe .pagination-previous:active,html.theme--catppuccin-frappe .pagination-next:active,html.theme--catppuccin-frappe .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-frappe .pagination-previous[disabled],html.theme--catppuccin-frappe .pagination-previous.is-disabled,html.theme--catppuccin-frappe .pagination-next[disabled],html.theme--catppuccin-frappe .pagination-next.is-disabled,html.theme--catppuccin-frappe .pagination-link[disabled],html.theme--catppuccin-frappe .pagination-link.is-disabled{background-color:#626880;border-color:#626880;box-shadow:none;color:#f1f4fd;opacity:0.5}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-frappe .pagination-link.is-current{background-color:#8caaee;border-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .pagination-ellipsis{color:#737994;pointer-events:none}html.theme--catppuccin-frappe .pagination-list{flex-wrap:wrap}html.theme--catppuccin-frappe .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .pagination{flex-wrap:wrap}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-frappe .pagination-previous{order:2}html.theme--catppuccin-frappe .pagination-next{order:3}html.theme--catppuccin-frappe .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-frappe .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-frappe .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-frappe .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-frappe .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-frappe .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-frappe .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-frappe .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-frappe .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-frappe .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-frappe .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-frappe .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-frappe .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-frappe .panel.is-dark .panel-heading,html.theme--catppuccin-frappe .content kbd.panel .panel-heading{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-frappe .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#414559}html.theme--catppuccin-frappe .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-frappe .content kbd.panel .panel-block.is-active .panel-icon{color:#414559}html.theme--catppuccin-frappe .panel.is-primary .panel-heading,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#8caaee}html.theme--catppuccin-frappe .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-frappe .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel.is-link .panel-heading{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .panel.is-link .panel-tabs a.is-active{border-bottom-color:#8caaee}html.theme--catppuccin-frappe .panel.is-link .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel.is-info .panel-heading{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-info .panel-tabs a.is-active{border-bottom-color:#81c8be}html.theme--catppuccin-frappe .panel.is-info .panel-block.is-active .panel-icon{color:#81c8be}html.theme--catppuccin-frappe .panel.is-success .panel-heading{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6d189}html.theme--catppuccin-frappe .panel.is-success .panel-block.is-active .panel-icon{color:#a6d189}html.theme--catppuccin-frappe .panel.is-warning .panel-heading{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#e5c890}html.theme--catppuccin-frappe .panel.is-warning .panel-block.is-active .panel-icon{color:#e5c890}html.theme--catppuccin-frappe .panel.is-danger .panel-heading{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#e78284}html.theme--catppuccin-frappe .panel.is-danger .panel-block.is-active .panel-icon{color:#e78284}html.theme--catppuccin-frappe .panel-tabs:not(:last-child),html.theme--catppuccin-frappe .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-frappe .panel-heading{background-color:#51576d;border-radius:8px 8px 0 0;color:#b0bef1;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-frappe .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-frappe .panel-tabs a{border-bottom:1px solid #626880;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-frappe .panel-tabs a.is-active{border-bottom-color:#51576d;color:#769aeb}html.theme--catppuccin-frappe .panel-list a{color:#c6d0f5}html.theme--catppuccin-frappe .panel-list a:hover{color:#8caaee}html.theme--catppuccin-frappe .panel-block{align-items:center;color:#b0bef1;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-frappe .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-frappe .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-frappe .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-frappe .panel-block.is-active{border-left-color:#8caaee;color:#769aeb}html.theme--catppuccin-frappe .panel-block.is-active .panel-icon{color:#8caaee}html.theme--catppuccin-frappe .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-frappe a.panel-block,html.theme--catppuccin-frappe label.panel-block{cursor:pointer}html.theme--catppuccin-frappe a.panel-block:hover,html.theme--catppuccin-frappe label.panel-block:hover{background-color:#292c3c}html.theme--catppuccin-frappe .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f1f4fd;margin-right:.75em}html.theme--catppuccin-frappe .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-frappe .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-frappe .tabs a{align-items:center;border-bottom-color:#626880;border-bottom-style:solid;border-bottom-width:1px;color:#c6d0f5;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-frappe .tabs a:hover{border-bottom-color:#b0bef1;color:#b0bef1}html.theme--catppuccin-frappe .tabs li{display:block}html.theme--catppuccin-frappe .tabs li.is-active a{border-bottom-color:#8caaee;color:#8caaee}html.theme--catppuccin-frappe .tabs ul{align-items:center;border-bottom-color:#626880;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-frappe .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-frappe .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-frappe .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-frappe .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-frappe .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-frappe .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-frappe .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-frappe .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-frappe .tabs.is-boxed a:hover{background-color:#292c3c;border-bottom-color:#626880}html.theme--catppuccin-frappe .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#626880;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-frappe .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-frappe .tabs.is-toggle a{border-color:#626880;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-frappe .tabs.is-toggle a:hover{background-color:#292c3c;border-color:#737994;z-index:2}html.theme--catppuccin-frappe .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-frappe .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-frappe .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-frappe .tabs.is-toggle li.is-active a{background-color:#8caaee;border-color:#8caaee;color:#fff;z-index:1}html.theme--catppuccin-frappe .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-frappe .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-frappe .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-frappe .tabs.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-frappe .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-frappe .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .column.is-narrow,html.theme--catppuccin-frappe .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full,html.theme--catppuccin-frappe .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters,html.theme--catppuccin-frappe .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds,html.theme--catppuccin-frappe .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half,html.theme--catppuccin-frappe .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third,html.theme--catppuccin-frappe .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter,html.theme--catppuccin-frappe .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth,html.theme--catppuccin-frappe .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths,html.theme--catppuccin-frappe .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths,html.theme--catppuccin-frappe .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths,html.theme--catppuccin-frappe .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters,html.theme--catppuccin-frappe .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds,html.theme--catppuccin-frappe .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half,html.theme--catppuccin-frappe .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third,html.theme--catppuccin-frappe .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter,html.theme--catppuccin-frappe .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth,html.theme--catppuccin-frappe .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths,html.theme--catppuccin-frappe .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths,html.theme--catppuccin-frappe .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths,html.theme--catppuccin-frappe .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-frappe .column.is-0,html.theme--catppuccin-frappe .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0,html.theme--catppuccin-frappe .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-frappe .column.is-1,html.theme--catppuccin-frappe .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1,html.theme--catppuccin-frappe .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2,html.theme--catppuccin-frappe .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2,html.theme--catppuccin-frappe .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3,html.theme--catppuccin-frappe .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3,html.theme--catppuccin-frappe .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-frappe .column.is-4,html.theme--catppuccin-frappe .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4,html.theme--catppuccin-frappe .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5,html.theme--catppuccin-frappe .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5,html.theme--catppuccin-frappe .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6,html.theme--catppuccin-frappe .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6,html.theme--catppuccin-frappe .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-frappe .column.is-7,html.theme--catppuccin-frappe .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7,html.theme--catppuccin-frappe .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8,html.theme--catppuccin-frappe .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8,html.theme--catppuccin-frappe .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9,html.theme--catppuccin-frappe .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9,html.theme--catppuccin-frappe .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-frappe .column.is-10,html.theme--catppuccin-frappe .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10,html.theme--catppuccin-frappe .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11,html.theme--catppuccin-frappe .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11,html.theme--catppuccin-frappe .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12,html.theme--catppuccin-frappe .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12,html.theme--catppuccin-frappe .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-frappe .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-frappe .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-frappe .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-frappe .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-frappe .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-frappe .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-frappe .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-frappe .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-frappe .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-frappe .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-frappe .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-frappe .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-frappe .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-frappe .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-frappe .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-frappe .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-frappe .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-frappe .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-frappe .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-frappe .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-frappe .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-frappe .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-frappe .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-frappe .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-frappe .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-frappe .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-frappe .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-frappe .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-frappe .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-frappe .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-frappe .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-frappe .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-frappe .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-frappe .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-frappe .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-frappe .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-frappe .columns.is-centered{justify-content:center}html.theme--catppuccin-frappe .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-frappe .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-frappe .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-frappe .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-frappe .columns.is-mobile{display:flex}html.theme--catppuccin-frappe .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-frappe .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-desktop{display:flex}}html.theme--catppuccin-frappe .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-frappe .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-frappe .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-frappe .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-frappe .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-frappe .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-frappe .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-frappe .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-frappe .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-frappe .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-frappe .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-frappe .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-frappe .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-frappe .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-frappe .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-frappe .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-frappe .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-frappe .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-frappe .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-frappe .tile.is-child{margin:0 !important}html.theme--catppuccin-frappe .tile.is-parent{padding:.75rem}html.theme--catppuccin-frappe .tile.is-vertical{flex-direction:column}html.theme--catppuccin-frappe .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .tile:not(.is-child){display:flex}html.theme--catppuccin-frappe .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-frappe .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-frappe .tile.is-3{flex:none;width:25%}html.theme--catppuccin-frappe .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-frappe .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-frappe .tile.is-6{flex:none;width:50%}html.theme--catppuccin-frappe .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-frappe .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-frappe .tile.is-9{flex:none;width:75%}html.theme--catppuccin-frappe .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-frappe .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-frappe .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-frappe .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-frappe .hero .navbar{background:none}html.theme--catppuccin-frappe .hero .tabs ul{border-bottom:none}html.theme--catppuccin-frappe .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-white strong{color:inherit}html.theme--catppuccin-frappe .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-frappe .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-frappe .hero.is-white .navbar-item,html.theme--catppuccin-frappe .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-frappe .hero.is-white a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-white .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-frappe .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-frappe .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-frappe .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-black strong{color:inherit}html.theme--catppuccin-frappe .hero.is-black .title{color:#fff}html.theme--catppuccin-frappe .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-frappe .hero.is-black .navbar-item,html.theme--catppuccin-frappe .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-black a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-black .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-frappe .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-frappe .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-frappe .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-light strong{color:inherit}html.theme--catppuccin-frappe .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-frappe .hero.is-light .navbar-item,html.theme--catppuccin-frappe .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-light .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-frappe .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-frappe .hero.is-dark,html.theme--catppuccin-frappe .content kbd.hero{background-color:#414559;color:#fff}html.theme--catppuccin-frappe .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-dark strong,html.theme--catppuccin-frappe .content kbd.hero strong{color:inherit}html.theme--catppuccin-frappe .hero.is-dark .title,html.theme--catppuccin-frappe .content kbd.hero .title{color:#fff}html.theme--catppuccin-frappe .hero.is-dark .subtitle,html.theme--catppuccin-frappe .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-frappe .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-dark .subtitle strong,html.theme--catppuccin-frappe .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-dark .navbar-menu,html.theme--catppuccin-frappe .content kbd.hero .navbar-menu{background-color:#414559}}html.theme--catppuccin-frappe .hero.is-dark .navbar-item,html.theme--catppuccin-frappe .content kbd.hero .navbar-item,html.theme--catppuccin-frappe .hero.is-dark .navbar-link,html.theme--catppuccin-frappe .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-frappe .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-frappe .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-dark .navbar-link:hover,html.theme--catppuccin-frappe .content kbd.hero .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-frappe .content kbd.hero .navbar-link.is-active{background-color:#363a4a;color:#fff}html.theme--catppuccin-frappe .hero.is-dark .tabs a,html.theme--catppuccin-frappe .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-dark .tabs a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs li.is-active a{color:#414559 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#414559}html.theme--catppuccin-frappe .hero.is-dark.is-bold,html.theme--catppuccin-frappe .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #262f41 0%, #414559 71%, #47476c 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-frappe .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #262f41 0%, #414559 71%, #47476c 100%)}}html.theme--catppuccin-frappe .hero.is-primary,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-primary strong,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-frappe .hero.is-primary .title,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-frappe .hero.is-primary .subtitle,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-primary .subtitle strong,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-primary .navbar-menu,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#8caaee}}html.theme--catppuccin-frappe .hero.is-primary .navbar-item,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-frappe .hero.is-primary .navbar-link,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-primary .navbar-link:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .hero.is-primary .tabs a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-primary .tabs a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#8caaee !important;opacity:1}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .hero.is-primary.is-bold,html.theme--catppuccin-frappe .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-frappe .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}}html.theme--catppuccin-frappe .hero.is-link{background-color:#8caaee;color:#fff}html.theme--catppuccin-frappe .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-link strong{color:inherit}html.theme--catppuccin-frappe .hero.is-link .title{color:#fff}html.theme--catppuccin-frappe .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-link .navbar-menu{background-color:#8caaee}}html.theme--catppuccin-frappe .hero.is-link .navbar-item,html.theme--catppuccin-frappe .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-link a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-link .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-link .navbar-link.is-active{background-color:#769aeb;color:#fff}html.theme--catppuccin-frappe .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-link .tabs li.is-active a{color:#8caaee !important;opacity:1}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8caaee}html.theme--catppuccin-frappe .hero.is-link.is-bold{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #569ff1 0%, #8caaee 71%, #a0abf4 100%)}}html.theme--catppuccin-frappe .hero.is-info{background-color:#81c8be;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-info strong{color:inherit}html.theme--catppuccin-frappe .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-info .navbar-menu{background-color:#81c8be}}html.theme--catppuccin-frappe .hero.is-info .navbar-item,html.theme--catppuccin-frappe .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-info .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-info .navbar-link.is-active{background-color:#6fc0b5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-info .tabs li.is-active a{color:#81c8be !important;opacity:1}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#81c8be}html.theme--catppuccin-frappe .hero.is-info.is-bold{background-image:linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #52c4a1 0%, #81c8be 71%, #8fd2d4 100%)}}html.theme--catppuccin-frappe .hero.is-success{background-color:#a6d189;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-success strong{color:inherit}html.theme--catppuccin-frappe .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-success .navbar-menu{background-color:#a6d189}}html.theme--catppuccin-frappe .hero.is-success .navbar-item,html.theme--catppuccin-frappe .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-success .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-success .navbar-link.is-active{background-color:#98ca77;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-success .tabs li.is-active a{color:#a6d189 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6d189}html.theme--catppuccin-frappe .hero.is-success.is-bold{background-image:linear-gradient(141deg, #9ccd5a 0%, #a6d189 71%, #a8dc98 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #9ccd5a 0%, #a6d189 71%, #a8dc98 100%)}}html.theme--catppuccin-frappe .hero.is-warning{background-color:#e5c890;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-warning strong{color:inherit}html.theme--catppuccin-frappe .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-frappe .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-warning .navbar-menu{background-color:#e5c890}}html.theme--catppuccin-frappe .hero.is-warning .navbar-item,html.theme--catppuccin-frappe .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-warning .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-warning .navbar-link.is-active{background-color:#e0be7b;color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-frappe .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-warning .tabs li.is-active a{color:#e5c890 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#e5c890}html.theme--catppuccin-frappe .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #e5a05d 0%, #e5c890 71%, #ede0a2 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e5a05d 0%, #e5c890 71%, #ede0a2 100%)}}html.theme--catppuccin-frappe .hero.is-danger{background-color:#e78284;color:#fff}html.theme--catppuccin-frappe .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-frappe .hero.is-danger strong{color:inherit}html.theme--catppuccin-frappe .hero.is-danger .title{color:#fff}html.theme--catppuccin-frappe .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-frappe .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-frappe .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .hero.is-danger .navbar-menu{background-color:#e78284}}html.theme--catppuccin-frappe .hero.is-danger .navbar-item,html.theme--catppuccin-frappe .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-frappe .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-frappe .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-frappe .hero.is-danger .navbar-link:hover,html.theme--catppuccin-frappe .hero.is-danger .navbar-link.is-active{background-color:#e36d6f;color:#fff}html.theme--catppuccin-frappe .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-frappe .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-frappe .hero.is-danger .tabs li.is-active a{color:#e78284 !important;opacity:1}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-frappe .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#e78284}html.theme--catppuccin-frappe .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #e94d6a 0%, #e78284 71%, #eea294 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e94d6a 0%, #e78284 71%, #eea294 100%)}}html.theme--catppuccin-frappe .hero.is-small .hero-body,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-frappe .hero.is-halfheight .hero-body,html.theme--catppuccin-frappe .hero.is-fullheight .hero-body,html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-frappe .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-frappe .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-frappe .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-frappe .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-frappe .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-frappe .hero-video{overflow:hidden}html.theme--catppuccin-frappe .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-frappe .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero-video{display:none}}html.theme--catppuccin-frappe .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-frappe .hero-buttons .button{display:flex}html.theme--catppuccin-frappe .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-frappe .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-frappe .hero-head,html.theme--catppuccin-frappe .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-frappe .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-frappe .hero-body{padding:3rem 3rem}}html.theme--catppuccin-frappe .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe .section{padding:3rem 3rem}html.theme--catppuccin-frappe .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-frappe .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-frappe .footer{background-color:#292c3c;padding:3rem 1.5rem 6rem}html.theme--catppuccin-frappe h1 .docs-heading-anchor,html.theme--catppuccin-frappe h1 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h1 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h2 .docs-heading-anchor,html.theme--catppuccin-frappe h2 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h2 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h3 .docs-heading-anchor,html.theme--catppuccin-frappe h3 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h3 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h4 .docs-heading-anchor,html.theme--catppuccin-frappe h4 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h4 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h5 .docs-heading-anchor,html.theme--catppuccin-frappe h5 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h5 .docs-heading-anchor:visited,html.theme--catppuccin-frappe h6 .docs-heading-anchor,html.theme--catppuccin-frappe h6 .docs-heading-anchor:hover,html.theme--catppuccin-frappe h6 .docs-heading-anchor:visited{color:#c6d0f5}html.theme--catppuccin-frappe h1 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h2 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h3 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h4 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h5 .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-frappe h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-frappe h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-frappe h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-frappe h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-frappe .docs-light-only{display:none !important}html.theme--catppuccin-frappe pre{position:relative;overflow:hidden}html.theme--catppuccin-frappe pre code,html.theme--catppuccin-frappe pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-frappe pre code:first-of-type,html.theme--catppuccin-frappe pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-frappe pre code:last-of-type,html.theme--catppuccin-frappe pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-frappe pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#c6d0f5;cursor:pointer;text-align:center}html.theme--catppuccin-frappe pre .copy-button:focus,html.theme--catppuccin-frappe pre .copy-button:hover{opacity:1;background:rgba(198,208,245,0.1);color:#8caaee}html.theme--catppuccin-frappe pre .copy-button.success{color:#a6d189;opacity:1}html.theme--catppuccin-frappe pre .copy-button.error{color:#e78284;opacity:1}html.theme--catppuccin-frappe pre:hover .copy-button{opacity:1}html.theme--catppuccin-frappe .admonition{background-color:#292c3c;border-style:solid;border-width:2px;border-color:#b5bfe2;border-radius:4px;font-size:1rem}html.theme--catppuccin-frappe .admonition strong{color:currentColor}html.theme--catppuccin-frappe .admonition.is-small,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-frappe .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-frappe .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-frappe .admonition.is-default{background-color:#292c3c;border-color:#b5bfe2}html.theme--catppuccin-frappe .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#b5bfe2}html.theme--catppuccin-frappe .admonition.is-default>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-info{background-color:#292c3c;border-color:#81c8be}html.theme--catppuccin-frappe .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#81c8be}html.theme--catppuccin-frappe .admonition.is-info>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-success{background-color:#292c3c;border-color:#a6d189}html.theme--catppuccin-frappe .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6d189}html.theme--catppuccin-frappe .admonition.is-success>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-warning{background-color:#292c3c;border-color:#e5c890}html.theme--catppuccin-frappe .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#e5c890}html.theme--catppuccin-frappe .admonition.is-warning>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-danger{background-color:#292c3c;border-color:#e78284}html.theme--catppuccin-frappe .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#e78284}html.theme--catppuccin-frappe .admonition.is-danger>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-compat{background-color:#292c3c;border-color:#99d1db}html.theme--catppuccin-frappe .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#99d1db}html.theme--catppuccin-frappe .admonition.is-compat>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition.is-todo{background-color:#292c3c;border-color:#ca9ee6}html.theme--catppuccin-frappe .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#ca9ee6}html.theme--catppuccin-frappe .admonition.is-todo>.admonition-body{color:#c6d0f5}html.theme--catppuccin-frappe .admonition-header{color:#b5bfe2;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-frappe .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-frappe details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-frappe details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-frappe details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-frappe .admonition-body{color:#c6d0f5;padding:0.5rem .75rem}html.theme--catppuccin-frappe .admonition-body pre{background-color:#292c3c}html.theme--catppuccin-frappe .admonition-body code{background-color:#292c3c}html.theme--catppuccin-frappe .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #626880;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-frappe .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#292c3c;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #626880;overflow:auto}html.theme--catppuccin-frappe .docstring>header code{background-color:transparent}html.theme--catppuccin-frappe .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-frappe .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-frappe .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-frappe .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #626880}html.theme--catppuccin-frappe .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-frappe .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-frappe .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-frappe .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-frappe .documenter-example-output{background-color:#303446}html.theme--catppuccin-frappe .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#292c3c;color:#c6d0f5;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-frappe .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-frappe .outdated-warning-overlay a{color:#8caaee}html.theme--catppuccin-frappe .outdated-warning-overlay a:hover{color:#99d1db}html.theme--catppuccin-frappe .content pre{border:2px solid #626880;border-radius:4px}html.theme--catppuccin-frappe .content code{font-weight:inherit}html.theme--catppuccin-frappe .content a code{color:#8caaee}html.theme--catppuccin-frappe .content a:hover code{color:#99d1db}html.theme--catppuccin-frappe .content h1 code,html.theme--catppuccin-frappe .content h2 code,html.theme--catppuccin-frappe .content h3 code,html.theme--catppuccin-frappe .content h4 code,html.theme--catppuccin-frappe .content h5 code,html.theme--catppuccin-frappe .content h6 code{color:#c6d0f5}html.theme--catppuccin-frappe .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-frappe .content blockquote>ul:first-child,html.theme--catppuccin-frappe .content blockquote>ol:first-child,html.theme--catppuccin-frappe .content .admonition-body>ul:first-child,html.theme--catppuccin-frappe .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-frappe pre,html.theme--catppuccin-frappe code{font-variant-ligatures:no-contextual}html.theme--catppuccin-frappe .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-frappe .breadcrumb a.is-disabled,html.theme--catppuccin-frappe .breadcrumb a.is-disabled:hover{color:#b0bef1}html.theme--catppuccin-frappe .hljs{background:initial !important}html.theme--catppuccin-frappe .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-frappe .katex-display,html.theme--catppuccin-frappe mjx-container,html.theme--catppuccin-frappe .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-frappe html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-frappe li.no-marker{list-style:none}html.theme--catppuccin-frappe #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-frappe #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main{width:100%}html.theme--catppuccin-frappe #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-frappe #documenter .docs-main>header,html.theme--catppuccin-frappe #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar{background-color:#303446;border-bottom:1px solid #626880;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-frappe #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-frappe #documenter .docs-main section.footnotes{border-top:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-frappe #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-frappe .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #626880;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-frappe #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-frappe #documenter .docs-sidebar{display:flex;flex-direction:column;color:#c6d0f5;background-color:#292c3c;border-right:1px solid #626880;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-frappe #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-package-name a:hover{color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #626880;display:none;padding:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #626880;padding-bottom:1.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#c6d0f5;background:#292c3c}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#c6d0f5;background-color:#313548}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #626880;border-bottom:1px solid #626880;background-color:#232634}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#232634;color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#313548;color:#c6d0f5}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #626880}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-frappe #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3a3e54}html.theme--catppuccin-frappe #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4a506c}}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3a3e54}html.theme--catppuccin-frappe #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4a506c}}html.theme--catppuccin-frappe kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-frappe .search-min-width-50{min-width:50%}html.theme--catppuccin-frappe .search-min-height-100{min-height:100%}html.theme--catppuccin-frappe .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-frappe .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover,html.theme--catppuccin-frappe .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-frappe .search-result-link .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-frappe .property-search-result-badge,html.theme--catppuccin-frappe .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-frappe .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:hover .search-filter,html.theme--catppuccin-frappe .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-frappe .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-frappe .search-filter:hover,html.theme--catppuccin-frappe .search-filter:focus{color:#333}html.theme--catppuccin-frappe .search-filter-selected{color:#414559;background-color:#babbf1}html.theme--catppuccin-frappe .search-filter-selected:hover,html.theme--catppuccin-frappe .search-filter-selected:focus{color:#414559}html.theme--catppuccin-frappe .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-frappe .search-divider{border-bottom:1px solid #626880}html.theme--catppuccin-frappe .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-frappe .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-frappe #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-frappe #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-frappe .w-100{width:100%}html.theme--catppuccin-frappe .gap-2{gap:0.5rem}html.theme--catppuccin-frappe .gap-4{gap:1rem}html.theme--catppuccin-frappe .gap-8{gap:2rem}html.theme--catppuccin-frappe{background-color:#303446;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-frappe a{transition:all 200ms ease}html.theme--catppuccin-frappe .label{color:#c6d0f5}html.theme--catppuccin-frappe .button,html.theme--catppuccin-frappe .control.has-icons-left .icon,html.theme--catppuccin-frappe .control.has-icons-right .icon,html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .pagination-ellipsis,html.theme--catppuccin-frappe .pagination-link,html.theme--catppuccin-frappe .pagination-next,html.theme--catppuccin-frappe .pagination-previous,html.theme--catppuccin-frappe .select,html.theme--catppuccin-frappe .select select,html.theme--catppuccin-frappe .textarea{height:2.5em;color:#c6d0f5}html.theme--catppuccin-frappe .input,html.theme--catppuccin-frappe #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-frappe .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#c6d0f5}html.theme--catppuccin-frappe .select:after,html.theme--catppuccin-frappe .select select{border-width:1px}html.theme--catppuccin-frappe .menu-list a{transition:all 300ms ease}html.theme--catppuccin-frappe .modal-card-foot,html.theme--catppuccin-frappe .modal-card-head{border-color:#626880}html.theme--catppuccin-frappe .navbar{border-radius:.4em}html.theme--catppuccin-frappe .navbar.is-transparent{background:none}html.theme--catppuccin-frappe .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-frappe .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8caaee}@media screen and (max-width: 1055px){html.theme--catppuccin-frappe .navbar .navbar-menu{background-color:#8caaee;border-radius:0 0 .4em .4em}}html.theme--catppuccin-frappe .docstring>section>a.docs-sourcelink:not(body){color:#414559}html.theme--catppuccin-frappe .tag.is-link:not(body),html.theme--catppuccin-frappe .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-frappe .content kbd.is-link:not(body){color:#414559}html.theme--catppuccin-frappe .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-frappe .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-frappe .ansi span.sgr3{font-style:italic}html.theme--catppuccin-frappe .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-frappe .ansi span.sgr7{color:#303446;background-color:#c6d0f5}html.theme--catppuccin-frappe .ansi span.sgr8{color:transparent}html.theme--catppuccin-frappe .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-frappe .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-frappe .ansi span.sgr30{color:#51576d}html.theme--catppuccin-frappe .ansi span.sgr31{color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr32{color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr33{color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr34{color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr35{color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr36{color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr37{color:#b5bfe2}html.theme--catppuccin-frappe .ansi span.sgr40{background-color:#51576d}html.theme--catppuccin-frappe .ansi span.sgr41{background-color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr42{background-color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr43{background-color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr44{background-color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr45{background-color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr46{background-color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr47{background-color:#b5bfe2}html.theme--catppuccin-frappe .ansi span.sgr90{color:#626880}html.theme--catppuccin-frappe .ansi span.sgr91{color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr92{color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr93{color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr94{color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr95{color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr96{color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr97{color:#a5adce}html.theme--catppuccin-frappe .ansi span.sgr100{background-color:#626880}html.theme--catppuccin-frappe .ansi span.sgr101{background-color:#e78284}html.theme--catppuccin-frappe .ansi span.sgr102{background-color:#a6d189}html.theme--catppuccin-frappe .ansi span.sgr103{background-color:#e5c890}html.theme--catppuccin-frappe .ansi span.sgr104{background-color:#8caaee}html.theme--catppuccin-frappe .ansi span.sgr105{background-color:#f4b8e4}html.theme--catppuccin-frappe .ansi span.sgr106{background-color:#81c8be}html.theme--catppuccin-frappe .ansi span.sgr107{background-color:#a5adce}html.theme--catppuccin-frappe code.language-julia-repl>span.hljs-meta{color:#a6d189;font-weight:bolder}html.theme--catppuccin-frappe code .hljs{color:#c6d0f5;background:#303446}html.theme--catppuccin-frappe code .hljs-keyword{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-built_in{color:#e78284}html.theme--catppuccin-frappe code .hljs-type{color:#e5c890}html.theme--catppuccin-frappe code .hljs-literal{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-number{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-operator{color:#81c8be}html.theme--catppuccin-frappe code .hljs-punctuation{color:#b5bfe2}html.theme--catppuccin-frappe code .hljs-property{color:#81c8be}html.theme--catppuccin-frappe code .hljs-regexp{color:#f4b8e4}html.theme--catppuccin-frappe code .hljs-string{color:#a6d189}html.theme--catppuccin-frappe code .hljs-char.escape_{color:#a6d189}html.theme--catppuccin-frappe code .hljs-subst{color:#a5adce}html.theme--catppuccin-frappe code .hljs-symbol{color:#eebebe}html.theme--catppuccin-frappe code .hljs-variable{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-variable.language_{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-variable.constant_{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-title{color:#8caaee}html.theme--catppuccin-frappe code .hljs-title.class_{color:#e5c890}html.theme--catppuccin-frappe code .hljs-title.function_{color:#8caaee}html.theme--catppuccin-frappe code .hljs-params{color:#c6d0f5}html.theme--catppuccin-frappe code .hljs-comment{color:#626880}html.theme--catppuccin-frappe code .hljs-doctag{color:#e78284}html.theme--catppuccin-frappe code .hljs-meta{color:#ef9f76}html.theme--catppuccin-frappe code .hljs-section{color:#8caaee}html.theme--catppuccin-frappe code .hljs-tag{color:#a5adce}html.theme--catppuccin-frappe code .hljs-name{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-attr{color:#8caaee}html.theme--catppuccin-frappe code .hljs-attribute{color:#a6d189}html.theme--catppuccin-frappe code .hljs-bullet{color:#81c8be}html.theme--catppuccin-frappe code .hljs-code{color:#a6d189}html.theme--catppuccin-frappe code .hljs-emphasis{color:#e78284;font-style:italic}html.theme--catppuccin-frappe code .hljs-strong{color:#e78284;font-weight:bold}html.theme--catppuccin-frappe code .hljs-formula{color:#81c8be}html.theme--catppuccin-frappe code .hljs-link{color:#85c1dc;font-style:italic}html.theme--catppuccin-frappe code .hljs-quote{color:#a6d189;font-style:italic}html.theme--catppuccin-frappe code .hljs-selector-tag{color:#e5c890}html.theme--catppuccin-frappe code .hljs-selector-id{color:#8caaee}html.theme--catppuccin-frappe code .hljs-selector-class{color:#81c8be}html.theme--catppuccin-frappe code .hljs-selector-attr{color:#ca9ee6}html.theme--catppuccin-frappe code .hljs-selector-pseudo{color:#81c8be}html.theme--catppuccin-frappe code .hljs-template-tag{color:#eebebe}html.theme--catppuccin-frappe code .hljs-template-variable{color:#eebebe}html.theme--catppuccin-frappe code .hljs-addition{color:#a6d189;background:rgba(166,227,161,0.15)}html.theme--catppuccin-frappe code .hljs-deletion{color:#e78284;background:rgba(243,139,168,0.15)}html.theme--catppuccin-frappe .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover,html.theme--catppuccin-frappe .search-result-link:focus{background-color:#414559}html.theme--catppuccin-frappe .search-result-link .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-frappe .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:hover .search-filter,html.theme--catppuccin-frappe .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-frappe .search-result-link:focus .search-filter{color:#414559 !important;background-color:#babbf1 !important}html.theme--catppuccin-frappe .search-result-title{color:#c6d0f5}html.theme--catppuccin-frappe .search-result-highlight{background-color:#e78284;color:#292c3c}html.theme--catppuccin-frappe .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-frappe .w-100{width:100%}html.theme--catppuccin-frappe .gap-2{gap:0.5rem}html.theme--catppuccin-frappe .gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themes/catppuccin-latte.css b/previews/PR1200/assets/themes/catppuccin-latte.css new file mode 100644 index 0000000000..63160d3449 --- /dev/null +++ b/previews/PR1200/assets/themes/catppuccin-latte.css @@ -0,0 +1 @@ +html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte .file-name,html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-latte .pagination-previous:focus,html.theme--catppuccin-latte .pagination-next:focus,html.theme--catppuccin-latte .pagination-link:focus,html.theme--catppuccin-latte .pagination-ellipsis:focus,html.theme--catppuccin-latte .file-cta:focus,html.theme--catppuccin-latte .file-name:focus,html.theme--catppuccin-latte .select select:focus,html.theme--catppuccin-latte .textarea:focus,html.theme--catppuccin-latte .input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-latte .button:focus,html.theme--catppuccin-latte .is-focused.pagination-previous,html.theme--catppuccin-latte .is-focused.pagination-next,html.theme--catppuccin-latte .is-focused.pagination-link,html.theme--catppuccin-latte .is-focused.pagination-ellipsis,html.theme--catppuccin-latte .is-focused.file-cta,html.theme--catppuccin-latte .is-focused.file-name,html.theme--catppuccin-latte .select select.is-focused,html.theme--catppuccin-latte .is-focused.textarea,html.theme--catppuccin-latte .is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-focused.button,html.theme--catppuccin-latte .pagination-previous:active,html.theme--catppuccin-latte .pagination-next:active,html.theme--catppuccin-latte .pagination-link:active,html.theme--catppuccin-latte .pagination-ellipsis:active,html.theme--catppuccin-latte .file-cta:active,html.theme--catppuccin-latte .file-name:active,html.theme--catppuccin-latte .select select:active,html.theme--catppuccin-latte .textarea:active,html.theme--catppuccin-latte .input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-latte .button:active,html.theme--catppuccin-latte .is-active.pagination-previous,html.theme--catppuccin-latte .is-active.pagination-next,html.theme--catppuccin-latte .is-active.pagination-link,html.theme--catppuccin-latte .is-active.pagination-ellipsis,html.theme--catppuccin-latte .is-active.file-cta,html.theme--catppuccin-latte .is-active.file-name,html.theme--catppuccin-latte .select select.is-active,html.theme--catppuccin-latte .is-active.textarea,html.theme--catppuccin-latte .is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .is-active.button{outline:none}html.theme--catppuccin-latte .pagination-previous[disabled],html.theme--catppuccin-latte .pagination-next[disabled],html.theme--catppuccin-latte .pagination-link[disabled],html.theme--catppuccin-latte .pagination-ellipsis[disabled],html.theme--catppuccin-latte .file-cta[disabled],html.theme--catppuccin-latte .file-name[disabled],html.theme--catppuccin-latte .select select[disabled],html.theme--catppuccin-latte .textarea[disabled],html.theme--catppuccin-latte .input[disabled],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-latte .button[disabled],fieldset[disabled] html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-latte .file-name,html.theme--catppuccin-latte fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-latte .select select,fieldset[disabled] html.theme--catppuccin-latte .textarea,fieldset[disabled] html.theme--catppuccin-latte .input,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte fieldset[disabled] .select select,html.theme--catppuccin-latte .select fieldset[disabled] select,html.theme--catppuccin-latte fieldset[disabled] .textarea,html.theme--catppuccin-latte fieldset[disabled] .input,html.theme--catppuccin-latte fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-latte .button,html.theme--catppuccin-latte fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-latte .tabs,html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .breadcrumb,html.theme--catppuccin-latte .file,html.theme--catppuccin-latte .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-latte .admonition:not(:last-child),html.theme--catppuccin-latte .tabs:not(:last-child),html.theme--catppuccin-latte .pagination:not(:last-child),html.theme--catppuccin-latte .message:not(:last-child),html.theme--catppuccin-latte .level:not(:last-child),html.theme--catppuccin-latte .breadcrumb:not(:last-child),html.theme--catppuccin-latte .block:not(:last-child),html.theme--catppuccin-latte .title:not(:last-child),html.theme--catppuccin-latte .subtitle:not(:last-child),html.theme--catppuccin-latte .table-container:not(:last-child),html.theme--catppuccin-latte .table:not(:last-child),html.theme--catppuccin-latte .progress:not(:last-child),html.theme--catppuccin-latte .notification:not(:last-child),html.theme--catppuccin-latte .content:not(:last-child),html.theme--catppuccin-latte .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .modal-close,html.theme--catppuccin-latte .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-latte .modal-close::before,html.theme--catppuccin-latte .delete::before,html.theme--catppuccin-latte .modal-close::after,html.theme--catppuccin-latte .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-latte .modal-close::before,html.theme--catppuccin-latte .delete::before{height:2px;width:50%}html.theme--catppuccin-latte .modal-close::after,html.theme--catppuccin-latte .delete::after{height:50%;width:2px}html.theme--catppuccin-latte .modal-close:hover,html.theme--catppuccin-latte .delete:hover,html.theme--catppuccin-latte .modal-close:focus,html.theme--catppuccin-latte .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-latte .modal-close:active,html.theme--catppuccin-latte .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-latte .is-small.modal-close,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-latte .is-small.delete,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-latte .is-medium.modal-close,html.theme--catppuccin-latte .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-latte .is-large.modal-close,html.theme--catppuccin-latte .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-latte .control.is-loading::after,html.theme--catppuccin-latte .select.is-loading::after,html.theme--catppuccin-latte .loader,html.theme--catppuccin-latte .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #8c8fa1;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-latte .hero-video,html.theme--catppuccin-latte .modal-background,html.theme--catppuccin-latte .modal,html.theme--catppuccin-latte .image.is-square img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-latte .image.is-square .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-latte .image.is-1by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-latte .image.is-1by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-latte .image.is-5by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-latte .image.is-5by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-latte .image.is-4by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-latte .image.is-4by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-latte .image.is-3by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-latte .image.is-5by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-latte .image.is-5by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-latte .image.is-16by9 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-latte .image.is-16by9 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-latte .image.is-2by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-latte .image.is-2by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-latte .image.is-3by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-latte .image.is-3by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-latte .image.is-4by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-latte .image.is-4by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-latte .image.is-3by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-latte .image.is-3by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-latte .image.is-2by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-latte .image.is-2by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-latte .image.is-3by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-latte .image.is-9by16 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-latte .image.is-9by16 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-latte .image.is-1by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-latte .image.is-1by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-latte .image.is-1by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-latte .image.is-1by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-latte .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#ccd0da !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#aeb5c5 !important}.has-background-dark{background-color:#ccd0da !important}.has-text-primary{color:#1e66f5 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#0a4ed6 !important}.has-background-primary{background-color:#1e66f5 !important}.has-text-primary-light{color:#ebf2fe !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bbd1fc !important}.has-background-primary-light{background-color:#ebf2fe !important}.has-text-primary-dark{color:#0a52e1 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#286df5 !important}.has-background-primary-dark{background-color:#0a52e1 !important}.has-text-link{color:#1e66f5 !important}a.has-text-link:hover,a.has-text-link:focus{color:#0a4ed6 !important}.has-background-link{background-color:#1e66f5 !important}.has-text-link-light{color:#ebf2fe !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bbd1fc !important}.has-background-link-light{background-color:#ebf2fe !important}.has-text-link-dark{color:#0a52e1 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#286df5 !important}.has-background-link-dark{background-color:#0a52e1 !important}.has-text-info{color:#179299 !important}a.has-text-info:hover,a.has-text-info:focus{color:#10686d !important}.has-background-info{background-color:#179299 !important}.has-text-info-light{color:#edfcfc !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c1f3f6 !important}.has-background-info-light{background-color:#edfcfc !important}.has-text-info-dark{color:#1cb2ba !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#2ad5df !important}.has-background-info-dark{background-color:#1cb2ba !important}.has-text-success{color:#40a02b !important}a.has-text-success:hover,a.has-text-success:focus{color:#307820 !important}.has-background-success{background-color:#40a02b !important}.has-text-success-light{color:#f1fbef !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#cef0c7 !important}.has-background-success-light{background-color:#f1fbef !important}.has-text-success-dark{color:#40a12b !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#50c936 !important}.has-background-success-dark{background-color:#40a12b !important}.has-text-warning{color:#df8e1d !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#b27117 !important}.has-background-warning{background-color:#df8e1d !important}.has-text-warning-light{color:#fdf6ed !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f7e0c0 !important}.has-background-warning-light{background-color:#fdf6ed !important}.has-text-warning-dark{color:#9e6515 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#cb811a !important}.has-background-warning-dark{background-color:#9e6515 !important}.has-text-danger{color:#d20f39 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a20c2c !important}.has-background-danger{background-color:#d20f39 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabcca !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#e9113f !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#f13c63 !important}.has-background-danger-dark{background-color:#e9113f !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#ccd0da !important}.has-background-grey-darker{background-color:#ccd0da !important}.has-text-grey-dark{color:#bcc0cc !important}.has-background-grey-dark{background-color:#bcc0cc !important}.has-text-grey{color:#acb0be !important}.has-background-grey{background-color:#acb0be !important}.has-text-grey-light{color:#9ca0b0 !important}.has-background-grey-light{background-color:#9ca0b0 !important}.has-text-grey-lighter{color:#8c8fa1 !important}.has-background-grey-lighter{background-color:#8c8fa1 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-latte html{background-color:#eff1f5;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-latte article,html.theme--catppuccin-latte aside,html.theme--catppuccin-latte figure,html.theme--catppuccin-latte footer,html.theme--catppuccin-latte header,html.theme--catppuccin-latte hgroup,html.theme--catppuccin-latte section{display:block}html.theme--catppuccin-latte body,html.theme--catppuccin-latte button,html.theme--catppuccin-latte input,html.theme--catppuccin-latte optgroup,html.theme--catppuccin-latte select,html.theme--catppuccin-latte textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-latte code,html.theme--catppuccin-latte pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-latte body{color:#4c4f69;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-latte a{color:#1e66f5;cursor:pointer;text-decoration:none}html.theme--catppuccin-latte a strong{color:currentColor}html.theme--catppuccin-latte a:hover{color:#04a5e5}html.theme--catppuccin-latte code{background-color:#e6e9ef;color:#4c4f69;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-latte hr{background-color:#e6e9ef;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-latte img{height:auto;max-width:100%}html.theme--catppuccin-latte input[type="checkbox"],html.theme--catppuccin-latte input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-latte small{font-size:.875em}html.theme--catppuccin-latte span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-latte strong{color:#41445a;font-weight:700}html.theme--catppuccin-latte fieldset{border:none}html.theme--catppuccin-latte pre{-webkit-overflow-scrolling:touch;background-color:#e6e9ef;color:#4c4f69;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-latte pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-latte table td,html.theme--catppuccin-latte table th{vertical-align:top}html.theme--catppuccin-latte table td:not([align]),html.theme--catppuccin-latte table th:not([align]){text-align:inherit}html.theme--catppuccin-latte table th{color:#41445a}html.theme--catppuccin-latte .box{background-color:#bcc0cc;border-radius:8px;box-shadow:none;color:#4c4f69;display:block;padding:1.25rem}html.theme--catppuccin-latte a.box:hover,html.theme--catppuccin-latte a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1e66f5}html.theme--catppuccin-latte a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1e66f5}html.theme--catppuccin-latte .button{background-color:#e6e9ef;border-color:#fff;border-width:1px;color:#1e66f5;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-latte .button strong{color:inherit}html.theme--catppuccin-latte .button .icon,html.theme--catppuccin-latte .button .icon.is-small,html.theme--catppuccin-latte .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-latte .button .icon.is-medium,html.theme--catppuccin-latte .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-latte .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-latte .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-latte .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-latte .button:hover,html.theme--catppuccin-latte .button.is-hovered{border-color:#9ca0b0;color:#41445a}html.theme--catppuccin-latte .button:focus,html.theme--catppuccin-latte .button.is-focused{border-color:#9ca0b0;color:#0b57ef}html.theme--catppuccin-latte .button:focus:not(:active),html.theme--catppuccin-latte .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button:active,html.theme--catppuccin-latte .button.is-active{border-color:#bcc0cc;color:#41445a}html.theme--catppuccin-latte .button.is-text{background-color:transparent;border-color:transparent;color:#4c4f69;text-decoration:underline}html.theme--catppuccin-latte .button.is-text:hover,html.theme--catppuccin-latte .button.is-text.is-hovered,html.theme--catppuccin-latte .button.is-text:focus,html.theme--catppuccin-latte .button.is-text.is-focused{background-color:#e6e9ef;color:#41445a}html.theme--catppuccin-latte .button.is-text:active,html.theme--catppuccin-latte .button.is-text.is-active{background-color:#d6dbe5;color:#41445a}html.theme--catppuccin-latte .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-latte .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1e66f5;text-decoration:none}html.theme--catppuccin-latte .button.is-ghost:hover,html.theme--catppuccin-latte .button.is-ghost.is-hovered{color:#1e66f5;text-decoration:underline}html.theme--catppuccin-latte .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:hover,html.theme--catppuccin-latte .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:focus,html.theme--catppuccin-latte .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white:focus:not(:active),html.theme--catppuccin-latte .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .button.is-white:active,html.theme--catppuccin-latte .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-latte .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted:hover,html.theme--catppuccin-latte .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-latte .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-white.is-outlined:hover,html.theme--catppuccin-latte .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-white.is-outlined:focus,html.theme--catppuccin-latte .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:hover,html.theme--catppuccin-latte .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:focus,html.theme--catppuccin-latte .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black:focus:not(:active),html.theme--catppuccin-latte .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .button.is-black:active,html.theme--catppuccin-latte .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-latte .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted:hover,html.theme--catppuccin-latte .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-outlined:hover,html.theme--catppuccin-latte .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-black.is-outlined:focus,html.theme--catppuccin-latte .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:hover,html.theme--catppuccin-latte .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:focus,html.theme--catppuccin-latte .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light:focus:not(:active),html.theme--catppuccin-latte .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .button.is-light:active,html.theme--catppuccin-latte .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-latte .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted:hover,html.theme--catppuccin-latte .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-outlined:hover,html.theme--catppuccin-latte .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-light.is-outlined:focus,html.theme--catppuccin-latte .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark,html.theme--catppuccin-latte .content kbd.button{background-color:#ccd0da;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:hover,html.theme--catppuccin-latte .content kbd.button:hover,html.theme--catppuccin-latte .button.is-dark.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-hovered{background-color:#c5c9d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:focus,html.theme--catppuccin-latte .content kbd.button:focus,html.theme--catppuccin-latte .button.is-dark.is-focused,html.theme--catppuccin-latte .content kbd.button.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark:focus:not(:active),html.theme--catppuccin-latte .content kbd.button:focus:not(:active),html.theme--catppuccin-latte .button.is-dark.is-focused:not(:active),html.theme--catppuccin-latte .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .button.is-dark:active,html.theme--catppuccin-latte .content kbd.button:active,html.theme--catppuccin-latte .button.is-dark.is-active,html.theme--catppuccin-latte .content kbd.button.is-active{background-color:#bdc2cf;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark[disabled],html.theme--catppuccin-latte .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button{background-color:#ccd0da;border-color:#ccd0da;box-shadow:none}html.theme--catppuccin-latte .button.is-dark.is-inverted,html.theme--catppuccin-latte .content kbd.button.is-inverted{background-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted:hover,html.theme--catppuccin-latte .content kbd.button.is-inverted:hover,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-inverted[disabled],html.theme--catppuccin-latte .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-loading::after,html.theme--catppuccin-latte .content kbd.button.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-dark.is-outlined,html.theme--catppuccin-latte .content kbd.button.is-outlined{background-color:transparent;border-color:#ccd0da;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-outlined:hover,html.theme--catppuccin-latte .content kbd.button.is-outlined:hover,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-dark.is-outlined:focus,html.theme--catppuccin-latte .content kbd.button.is-outlined:focus,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-focused{background-color:#ccd0da;border-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #ccd0da #ccd0da !important}html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-latte .button.is-dark.is-outlined[disabled],html.theme--catppuccin-latte .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-outlined{background-color:transparent;border-color:#ccd0da;box-shadow:none;color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ccd0da #ccd0da !important}html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .button.is-primary,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:hover,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:focus,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary:focus:not(:active),html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-latte .button.is-primary.is-focused:not(:active),html.theme--catppuccin-latte .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button.is-primary:active,html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-latte .button.is-primary.is-active,html.theme--catppuccin-latte .docstring>section>a.button.is-active.docs-sourcelink{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-primary[disabled],html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.docs-sourcelink{background-color:#1e66f5;border-color:#1e66f5;box-shadow:none}html.theme--catppuccin-latte .button.is-primary.is-inverted,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-primary.is-inverted[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-loading::after,html.theme--catppuccin-latte .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-primary.is-outlined,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-outlined:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-latte .button.is-primary.is-outlined:focus,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-latte .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-primary.is-outlined[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#1e66f5;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-latte .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-primary.is-light,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .button.is-primary.is-light:hover,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-latte .button.is-primary.is-light.is-hovered,html.theme--catppuccin-latte .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#dfe9fe;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-primary.is-light:active,html.theme--catppuccin-latte .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-latte .button.is-primary.is-light.is-active,html.theme--catppuccin-latte .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d3e1fd;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-link{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:hover,html.theme--catppuccin-latte .button.is-link.is-hovered{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:focus,html.theme--catppuccin-latte .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link:focus:not(:active),html.theme--catppuccin-latte .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .button.is-link:active,html.theme--catppuccin-latte .button.is-link.is-active{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link{background-color:#1e66f5;border-color:#1e66f5;box-shadow:none}html.theme--catppuccin-latte .button.is-link.is-inverted{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted:hover,html.theme--catppuccin-latte .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-link.is-outlined{background-color:transparent;border-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-outlined:hover,html.theme--catppuccin-latte .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-link.is-outlined:focus,html.theme--catppuccin-latte .button.is-link.is-outlined.is-focused{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-outlined{background-color:transparent;border-color:#1e66f5;box-shadow:none;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1e66f5 #1e66f5 !important}html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-link.is-light{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .button.is-link.is-light:hover,html.theme--catppuccin-latte .button.is-link.is-light.is-hovered{background-color:#dfe9fe;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-link.is-light:active,html.theme--catppuccin-latte .button.is-link.is-light.is-active{background-color:#d3e1fd;border-color:transparent;color:#0a52e1}html.theme--catppuccin-latte .button.is-info{background-color:#179299;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:hover,html.theme--catppuccin-latte .button.is-info.is-hovered{background-color:#15878e;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:focus,html.theme--catppuccin-latte .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info:focus:not(:active),html.theme--catppuccin-latte .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .button.is-info:active,html.theme--catppuccin-latte .button.is-info.is-active{background-color:#147d83;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info{background-color:#179299;border-color:#179299;box-shadow:none}html.theme--catppuccin-latte .button.is-info.is-inverted{background-color:#fff;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted:hover,html.theme--catppuccin-latte .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#179299}html.theme--catppuccin-latte .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-info.is-outlined{background-color:transparent;border-color:#179299;color:#179299}html.theme--catppuccin-latte .button.is-info.is-outlined:hover,html.theme--catppuccin-latte .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-info.is-outlined:focus,html.theme--catppuccin-latte .button.is-info.is-outlined.is-focused{background-color:#179299;border-color:#179299;color:#fff}html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #179299 #179299 !important}html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-outlined{background-color:transparent;border-color:#179299;box-shadow:none;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#179299}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #179299 #179299 !important}html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-info.is-light{background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .button.is-info.is-light:hover,html.theme--catppuccin-latte .button.is-info.is-light.is-hovered{background-color:#e2f9fb;border-color:transparent;color:#1cb2ba}html.theme--catppuccin-latte .button.is-info.is-light:active,html.theme--catppuccin-latte .button.is-info.is-light.is-active{background-color:#d7f7f9;border-color:transparent;color:#1cb2ba}html.theme--catppuccin-latte .button.is-success{background-color:#40a02b;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:hover,html.theme--catppuccin-latte .button.is-success.is-hovered{background-color:#3c9628;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:focus,html.theme--catppuccin-latte .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success:focus:not(:active),html.theme--catppuccin-latte .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .button.is-success:active,html.theme--catppuccin-latte .button.is-success.is-active{background-color:#388c26;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success{background-color:#40a02b;border-color:#40a02b;box-shadow:none}html.theme--catppuccin-latte .button.is-success.is-inverted{background-color:#fff;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted:hover,html.theme--catppuccin-latte .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-success.is-outlined{background-color:transparent;border-color:#40a02b;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-outlined:hover,html.theme--catppuccin-latte .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-success.is-outlined:focus,html.theme--catppuccin-latte .button.is-success.is-outlined.is-focused{background-color:#40a02b;border-color:#40a02b;color:#fff}html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #40a02b #40a02b !important}html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-outlined{background-color:transparent;border-color:#40a02b;box-shadow:none;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#40a02b}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #40a02b #40a02b !important}html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-success.is-light{background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .button.is-success.is-light:hover,html.theme--catppuccin-latte .button.is-success.is-light.is-hovered{background-color:#e8f8e5;border-color:transparent;color:#40a12b}html.theme--catppuccin-latte .button.is-success.is-light:active,html.theme--catppuccin-latte .button.is-success.is-light.is-active{background-color:#e0f5db;border-color:transparent;color:#40a12b}html.theme--catppuccin-latte .button.is-warning{background-color:#df8e1d;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:hover,html.theme--catppuccin-latte .button.is-warning.is-hovered{background-color:#d4871c;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:focus,html.theme--catppuccin-latte .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning:focus:not(:active),html.theme--catppuccin-latte .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .button.is-warning:active,html.theme--catppuccin-latte .button.is-warning.is-active{background-color:#c8801a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning{background-color:#df8e1d;border-color:#df8e1d;box-shadow:none}html.theme--catppuccin-latte .button.is-warning.is-inverted{background-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted:hover,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-warning.is-outlined{background-color:transparent;border-color:#df8e1d;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-outlined:hover,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-warning.is-outlined:focus,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-focused{background-color:#df8e1d;border-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #df8e1d #df8e1d !important}html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-outlined{background-color:transparent;border-color:#df8e1d;box-shadow:none;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #df8e1d #df8e1d !important}html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-warning.is-light{background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .button.is-warning.is-light:hover,html.theme--catppuccin-latte .button.is-warning.is-light.is-hovered{background-color:#fbf1e2;border-color:transparent;color:#9e6515}html.theme--catppuccin-latte .button.is-warning.is-light:active,html.theme--catppuccin-latte .button.is-warning.is-light.is-active{background-color:#faebd6;border-color:transparent;color:#9e6515}html.theme--catppuccin-latte .button.is-danger{background-color:#d20f39;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:hover,html.theme--catppuccin-latte .button.is-danger.is-hovered{background-color:#c60e36;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:focus,html.theme--catppuccin-latte .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger:focus:not(:active),html.theme--catppuccin-latte .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .button.is-danger:active,html.theme--catppuccin-latte .button.is-danger.is-active{background-color:#ba0d33;border-color:transparent;color:#fff}html.theme--catppuccin-latte .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger{background-color:#d20f39;border-color:#d20f39;box-shadow:none}html.theme--catppuccin-latte .button.is-danger.is-inverted{background-color:#fff;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted:hover,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-latte .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-danger.is-outlined{background-color:transparent;border-color:#d20f39;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-outlined:hover,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-danger.is-outlined:focus,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-focused{background-color:#d20f39;border-color:#d20f39;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #d20f39 #d20f39 !important}html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-latte .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-outlined{background-color:transparent;border-color:#d20f39;box-shadow:none;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#d20f39}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #d20f39 #d20f39 !important}html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-latte .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-latte .button.is-danger.is-light{background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .button.is-danger.is-light:hover,html.theme--catppuccin-latte .button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#e9113f}html.theme--catppuccin-latte .button.is-danger.is-light:active,html.theme--catppuccin-latte .button.is-danger.is-light.is-active{background-color:#fcd4dd;border-color:transparent;color:#e9113f}html.theme--catppuccin-latte .button.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-latte .button.is-small:not(.is-rounded),html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-latte .button.is-normal{font-size:1rem}html.theme--catppuccin-latte .button.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .button.is-large{font-size:1.5rem}html.theme--catppuccin-latte .button[disabled],fieldset[disabled] html.theme--catppuccin-latte .button{background-color:#9ca0b0;border-color:#acb0be;box-shadow:none;opacity:.5}html.theme--catppuccin-latte .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-latte .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-latte .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-latte .button.is-static{background-color:#e6e9ef;border-color:#acb0be;color:#8c8fa1;box-shadow:none;pointer-events:none}html.theme--catppuccin-latte .button.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-latte .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-latte .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-latte .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-latte .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-latte .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-latte .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-latte .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-latte .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-latte .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-latte .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-latte .buttons.has-addons .button:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-latte .buttons.has-addons .button:focus,html.theme--catppuccin-latte .buttons.has-addons .button.is-focused,html.theme--catppuccin-latte .buttons.has-addons .button:active,html.theme--catppuccin-latte .buttons.has-addons .button.is-active,html.theme--catppuccin-latte .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-latte .buttons.has-addons .button:focus:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-latte .buttons.has-addons .button:active:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-latte .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-latte .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .buttons.is-centered{justify-content:center}html.theme--catppuccin-latte .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-latte .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-latte .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .button.is-responsive.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-latte .button.is-responsive,html.theme--catppuccin-latte .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-latte .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-latte .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .button.is-responsive.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-latte .button.is-responsive,html.theme--catppuccin-latte .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-latte .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-latte .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-latte .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-latte .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-latte .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-latte .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-latte .content li+li{margin-top:0.25em}html.theme--catppuccin-latte .content p:not(:last-child),html.theme--catppuccin-latte .content dl:not(:last-child),html.theme--catppuccin-latte .content ol:not(:last-child),html.theme--catppuccin-latte .content ul:not(:last-child),html.theme--catppuccin-latte .content blockquote:not(:last-child),html.theme--catppuccin-latte .content pre:not(:last-child),html.theme--catppuccin-latte .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-latte .content h1,html.theme--catppuccin-latte .content h2,html.theme--catppuccin-latte .content h3,html.theme--catppuccin-latte .content h4,html.theme--catppuccin-latte .content h5,html.theme--catppuccin-latte .content h6{color:#4c4f69;font-weight:600;line-height:1.125}html.theme--catppuccin-latte .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-latte .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-latte .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-latte .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-latte .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-latte .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-latte .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-latte .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-latte .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-latte .content blockquote{background-color:#e6e9ef;border-left:5px solid #acb0be;padding:1.25em 1.5em}html.theme--catppuccin-latte .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-latte .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-latte .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-latte .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-latte .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-latte .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-latte .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-latte .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-latte .content ul ul ul{list-style-type:square}html.theme--catppuccin-latte .content dd{margin-left:2em}html.theme--catppuccin-latte .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-latte .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-latte .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-latte .content figure img{display:inline-block}html.theme--catppuccin-latte .content figure figcaption{font-style:italic}html.theme--catppuccin-latte .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-latte .content sup,html.theme--catppuccin-latte .content sub{font-size:75%}html.theme--catppuccin-latte .content table{width:100%}html.theme--catppuccin-latte .content table td,html.theme--catppuccin-latte .content table th{border:1px solid #acb0be;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-latte .content table th{color:#41445a}html.theme--catppuccin-latte .content table th:not([align]){text-align:inherit}html.theme--catppuccin-latte .content table thead td,html.theme--catppuccin-latte .content table thead th{border-width:0 0 2px;color:#41445a}html.theme--catppuccin-latte .content table tfoot td,html.theme--catppuccin-latte .content table tfoot th{border-width:2px 0 0;color:#41445a}html.theme--catppuccin-latte .content table tbody tr:last-child td,html.theme--catppuccin-latte .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-latte .content .tabs li+li{margin-top:0}html.theme--catppuccin-latte .content.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-latte .content.is-normal{font-size:1rem}html.theme--catppuccin-latte .content.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .content.is-large{font-size:1.5rem}html.theme--catppuccin-latte .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-latte .icon.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-latte .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-latte .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-latte .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-latte .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-latte .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-latte div.icon-text{display:flex}html.theme--catppuccin-latte .image,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-latte .image img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-latte .image img.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-latte .image.is-fullwidth,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-latte .image.is-square img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-latte .image.is-square .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-latte .image.is-1by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-latte .image.is-1by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-latte .image.is-5by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-latte .image.is-5by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-latte .image.is-4by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-latte .image.is-4by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-latte .image.is-3by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-latte .image.is-5by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-latte .image.is-5by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-latte .image.is-16by9 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-latte .image.is-16by9 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-latte .image.is-2by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-latte .image.is-2by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-latte .image.is-3by1 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-latte .image.is-3by1 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-latte .image.is-4by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-latte .image.is-4by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-latte .image.is-3by4 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-latte .image.is-3by4 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-latte .image.is-2by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-latte .image.is-2by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-latte .image.is-3by5 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-latte .image.is-3by5 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-latte .image.is-9by16 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-latte .image.is-9by16 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-latte .image.is-1by2 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-latte .image.is-1by2 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-latte .image.is-1by3 img,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-latte .image.is-1by3 .has-ratio,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-latte .image.is-square,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-latte .image.is-1by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-latte .image.is-5by4,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-latte .image.is-4by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-latte .image.is-3by2,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-latte .image.is-5by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-latte .image.is-16by9,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-latte .image.is-2by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-latte .image.is-3by1,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-latte .image.is-4by5,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-latte .image.is-3by4,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-latte .image.is-2by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-latte .image.is-3by5,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-latte .image.is-9by16,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-latte .image.is-1by2,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-latte .image.is-1by3,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-latte .image.is-16x16,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-latte .image.is-24x24,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-latte .image.is-32x32,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-latte .image.is-48x48,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-latte .image.is-64x64,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-latte .image.is-96x96,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-latte .image.is-128x128,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-latte .notification{background-color:#e6e9ef;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-latte .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-latte .notification strong{color:currentColor}html.theme--catppuccin-latte .notification code,html.theme--catppuccin-latte .notification pre{background:#fff}html.theme--catppuccin-latte .notification pre code{background:transparent}html.theme--catppuccin-latte .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-latte .notification .title,html.theme--catppuccin-latte .notification .subtitle,html.theme--catppuccin-latte .notification .content{color:currentColor}html.theme--catppuccin-latte .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .notification.is-dark,html.theme--catppuccin-latte .content kbd.notification{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .notification.is-primary,html.theme--catppuccin-latte .docstring>section>a.notification.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .notification.is-primary.is-light,html.theme--catppuccin-latte .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .notification.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .notification.is-link.is-light{background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .notification.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .notification.is-info.is-light{background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .notification.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .notification.is-success.is-light{background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .notification.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .notification.is-warning.is-light{background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .notification.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .notification.is-danger.is-light{background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-latte .progress::-webkit-progress-bar{background-color:#bcc0cc}html.theme--catppuccin-latte .progress::-webkit-progress-value{background-color:#8c8fa1}html.theme--catppuccin-latte .progress::-moz-progress-bar{background-color:#8c8fa1}html.theme--catppuccin-latte .progress::-ms-fill{background-color:#8c8fa1;border:none}html.theme--catppuccin-latte .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-latte .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-latte .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-latte .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-latte .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-latte .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-latte .content kbd.progress::-webkit-progress-value{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-latte .content kbd.progress::-moz-progress-bar{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark::-ms-fill,html.theme--catppuccin-latte .content kbd.progress::-ms-fill{background-color:#ccd0da}html.theme--catppuccin-latte .progress.is-dark:indeterminate,html.theme--catppuccin-latte .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #ccd0da 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary::-ms-fill,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-primary:indeterminate,html.theme--catppuccin-latte .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #1e66f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-link::-webkit-progress-value{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link::-moz-progress-bar{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link::-ms-fill{background-color:#1e66f5}html.theme--catppuccin-latte .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1e66f5 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-info::-webkit-progress-value{background-color:#179299}html.theme--catppuccin-latte .progress.is-info::-moz-progress-bar{background-color:#179299}html.theme--catppuccin-latte .progress.is-info::-ms-fill{background-color:#179299}html.theme--catppuccin-latte .progress.is-info:indeterminate{background-image:linear-gradient(to right, #179299 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-success::-webkit-progress-value{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success::-moz-progress-bar{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success::-ms-fill{background-color:#40a02b}html.theme--catppuccin-latte .progress.is-success:indeterminate{background-image:linear-gradient(to right, #40a02b 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-warning::-webkit-progress-value{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning::-moz-progress-bar{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning::-ms-fill{background-color:#df8e1d}html.theme--catppuccin-latte .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #df8e1d 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress.is-danger::-webkit-progress-value{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger::-moz-progress-bar{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger::-ms-fill{background-color:#d20f39}html.theme--catppuccin-latte .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #d20f39 30%, #bcc0cc 30%)}html.theme--catppuccin-latte .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#bcc0cc;background-image:linear-gradient(to right, #4c4f69 30%, #bcc0cc 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-latte .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-latte .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-latte .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-latte .progress.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-latte .progress.is-medium{height:1.25rem}html.theme--catppuccin-latte .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-latte .table{background-color:#bcc0cc;color:#4c4f69}html.theme--catppuccin-latte .table td,html.theme--catppuccin-latte .table th{border:1px solid #acb0be;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-latte .table td.is-white,html.theme--catppuccin-latte .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .table td.is-black,html.theme--catppuccin-latte .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .table td.is-light,html.theme--catppuccin-latte .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .table td.is-dark,html.theme--catppuccin-latte .table th.is-dark{background-color:#ccd0da;border-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .table td.is-primary,html.theme--catppuccin-latte .table th.is-primary{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-link,html.theme--catppuccin-latte .table th.is-link{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-info,html.theme--catppuccin-latte .table th.is-info{background-color:#179299;border-color:#179299;color:#fff}html.theme--catppuccin-latte .table td.is-success,html.theme--catppuccin-latte .table th.is-success{background-color:#40a02b;border-color:#40a02b;color:#fff}html.theme--catppuccin-latte .table td.is-warning,html.theme--catppuccin-latte .table th.is-warning{background-color:#df8e1d;border-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .table td.is-danger,html.theme--catppuccin-latte .table th.is-danger{background-color:#d20f39;border-color:#d20f39;color:#fff}html.theme--catppuccin-latte .table td.is-narrow,html.theme--catppuccin-latte .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-latte .table td.is-selected,html.theme--catppuccin-latte .table th.is-selected{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table td.is-selected a,html.theme--catppuccin-latte .table td.is-selected strong,html.theme--catppuccin-latte .table th.is-selected a,html.theme--catppuccin-latte .table th.is-selected strong{color:currentColor}html.theme--catppuccin-latte .table td.is-vcentered,html.theme--catppuccin-latte .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-latte .table th{color:#41445a}html.theme--catppuccin-latte .table th:not([align]){text-align:left}html.theme--catppuccin-latte .table tr.is-selected{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .table tr.is-selected a,html.theme--catppuccin-latte .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-latte .table tr.is-selected td,html.theme--catppuccin-latte .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-latte .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table thead td,html.theme--catppuccin-latte .table thead th{border-width:0 0 2px;color:#41445a}html.theme--catppuccin-latte .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table tfoot td,html.theme--catppuccin-latte .table tfoot th{border-width:2px 0 0;color:#41445a}html.theme--catppuccin-latte .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .table tbody tr:last-child td,html.theme--catppuccin-latte .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-latte .table.is-bordered td,html.theme--catppuccin-latte .table.is-bordered th{border-width:1px}html.theme--catppuccin-latte .table.is-bordered tr:last-child td,html.theme--catppuccin-latte .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-latte .table.is-fullwidth{width:100%}html.theme--catppuccin-latte .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#ccd0da}html.theme--catppuccin-latte .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#ccd0da}html.theme--catppuccin-latte .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#d2d5de}html.theme--catppuccin-latte .table.is-narrow td,html.theme--catppuccin-latte .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-latte .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#ccd0da}html.theme--catppuccin-latte .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-latte .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .tags .tag,html.theme--catppuccin-latte .tags .content kbd,html.theme--catppuccin-latte .content .tags kbd,html.theme--catppuccin-latte .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-latte .tags .tag:not(:last-child),html.theme--catppuccin-latte .tags .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags kbd:not(:last-child),html.theme--catppuccin-latte .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-latte .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-latte .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-latte .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-latte .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-latte .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-latte .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-latte .tags.is-centered{justify-content:center}html.theme--catppuccin-latte .tags.is-centered .tag,html.theme--catppuccin-latte .tags.is-centered .content kbd,html.theme--catppuccin-latte .content .tags.is-centered kbd,html.theme--catppuccin-latte .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-latte .tags.is-right{justify-content:flex-end}html.theme--catppuccin-latte .tags.is-right .tag:not(:first-child),html.theme--catppuccin-latte .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-latte .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-latte .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-latte .tags.is-right .tag:not(:last-child),html.theme--catppuccin-latte .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-latte .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-latte .tags.has-addons .tag,html.theme--catppuccin-latte .tags.has-addons .content kbd,html.theme--catppuccin-latte .content .tags.has-addons kbd,html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-latte .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-latte .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-latte .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-latte .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-latte .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-latte .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-latte .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-latte .tag:not(body),html.theme--catppuccin-latte .content kbd:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#e6e9ef;border-radius:.4em;color:#4c4f69;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-latte .tag:not(body) .delete,html.theme--catppuccin-latte .content kbd:not(body) .delete,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-latte .tag.is-white:not(body),html.theme--catppuccin-latte .content kbd.is-white:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .tag.is-black:not(body),html.theme--catppuccin-latte .content kbd.is-black:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .tag.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .tag.is-dark:not(body),html.theme--catppuccin-latte .content kbd:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-latte .content .docstring>section>kbd:not(body){background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .tag.is-primary:not(body),html.theme--catppuccin-latte .content kbd.is-primary:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .tag.is-primary.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .tag.is-link:not(body),html.theme--catppuccin-latte .content kbd.is-link:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .tag.is-link.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-link.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ebf2fe;color:#0a52e1}html.theme--catppuccin-latte .tag.is-info:not(body),html.theme--catppuccin-latte .content kbd.is-info:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#179299;color:#fff}html.theme--catppuccin-latte .tag.is-info.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-info.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#edfcfc;color:#1cb2ba}html.theme--catppuccin-latte .tag.is-success:not(body),html.theme--catppuccin-latte .content kbd.is-success:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .tag.is-success.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-success.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f1fbef;color:#40a12b}html.theme--catppuccin-latte .tag.is-warning:not(body),html.theme--catppuccin-latte .content kbd.is-warning:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .tag.is-warning.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fdf6ed;color:#9e6515}html.theme--catppuccin-latte .tag.is-danger:not(body),html.theme--catppuccin-latte .content kbd.is-danger:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .tag.is-danger.is-light:not(body),html.theme--catppuccin-latte .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#feecf0;color:#e9113f}html.theme--catppuccin-latte .tag.is-normal:not(body),html.theme--catppuccin-latte .content kbd.is-normal:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-latte .tag.is-medium:not(body),html.theme--catppuccin-latte .content kbd.is-medium:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-latte .tag.is-large:not(body),html.theme--catppuccin-latte .content kbd.is-large:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-latte .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-latte .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-latte .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-latte .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-latte .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-latte .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-latte .tag.is-delete:not(body),html.theme--catppuccin-latte .content kbd.is-delete:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-latte .tag.is-delete:not(body)::before,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::before,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-latte .tag.is-delete:not(body)::after,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::after,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-latte .tag.is-delete:not(body)::before,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::before,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-latte .tag.is-delete:not(body)::after,html.theme--catppuccin-latte .content kbd.is-delete:not(body)::after,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-latte .tag.is-delete:not(body):hover,html.theme--catppuccin-latte .content kbd.is-delete:not(body):hover,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-latte .tag.is-delete:not(body):focus,html.theme--catppuccin-latte .content kbd.is-delete:not(body):focus,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#d6dbe5}html.theme--catppuccin-latte .tag.is-delete:not(body):active,html.theme--catppuccin-latte .content kbd.is-delete:not(body):active,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#c7cedb}html.theme--catppuccin-latte .tag.is-rounded:not(body),html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-latte .content kbd.is-rounded:not(body),html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-latte a.tag:hover,html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-latte .title,html.theme--catppuccin-latte .subtitle{word-break:break-word}html.theme--catppuccin-latte .title em,html.theme--catppuccin-latte .title span,html.theme--catppuccin-latte .subtitle em,html.theme--catppuccin-latte .subtitle span{font-weight:inherit}html.theme--catppuccin-latte .title sub,html.theme--catppuccin-latte .subtitle sub{font-size:.75em}html.theme--catppuccin-latte .title sup,html.theme--catppuccin-latte .subtitle sup{font-size:.75em}html.theme--catppuccin-latte .title .tag,html.theme--catppuccin-latte .title .content kbd,html.theme--catppuccin-latte .content .title kbd,html.theme--catppuccin-latte .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-latte .subtitle .tag,html.theme--catppuccin-latte .subtitle .content kbd,html.theme--catppuccin-latte .content .subtitle kbd,html.theme--catppuccin-latte .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-latte .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-latte .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-latte .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-latte .title.is-1{font-size:3rem}html.theme--catppuccin-latte .title.is-2{font-size:2.5rem}html.theme--catppuccin-latte .title.is-3{font-size:2rem}html.theme--catppuccin-latte .title.is-4{font-size:1.5rem}html.theme--catppuccin-latte .title.is-5{font-size:1.25rem}html.theme--catppuccin-latte .title.is-6{font-size:1rem}html.theme--catppuccin-latte .title.is-7{font-size:.75rem}html.theme--catppuccin-latte .subtitle{color:#9ca0b0;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-latte .subtitle strong{color:#9ca0b0;font-weight:600}html.theme--catppuccin-latte .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-latte .subtitle.is-1{font-size:3rem}html.theme--catppuccin-latte .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-latte .subtitle.is-3{font-size:2rem}html.theme--catppuccin-latte .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-latte .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-latte .subtitle.is-6{font-size:1rem}html.theme--catppuccin-latte .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-latte .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-latte .number{align-items:center;background-color:#e6e9ef;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{background-color:#eff1f5;border-color:#acb0be;border-radius:.4em;color:#8c8fa1}html.theme--catppuccin-latte .select select::-moz-placeholder,html.theme--catppuccin-latte .textarea::-moz-placeholder,html.theme--catppuccin-latte .input::-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-latte .select select::-webkit-input-placeholder,html.theme--catppuccin-latte .textarea::-webkit-input-placeholder,html.theme--catppuccin-latte .input::-webkit-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:-moz-placeholder,html.theme--catppuccin-latte .textarea:-moz-placeholder,html.theme--catppuccin-latte .input:-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:-ms-input-placeholder,html.theme--catppuccin-latte .textarea:-ms-input-placeholder,html.theme--catppuccin-latte .input:-ms-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-latte .select select:hover,html.theme--catppuccin-latte .textarea:hover,html.theme--catppuccin-latte .input:hover,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-latte .select select.is-hovered,html.theme--catppuccin-latte .is-hovered.textarea,html.theme--catppuccin-latte .is-hovered.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#9ca0b0}html.theme--catppuccin-latte .select select:focus,html.theme--catppuccin-latte .textarea:focus,html.theme--catppuccin-latte .input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-latte .select select.is-focused,html.theme--catppuccin-latte .is-focused.textarea,html.theme--catppuccin-latte .is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .select select:active,html.theme--catppuccin-latte .textarea:active,html.theme--catppuccin-latte .input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-latte .select select.is-active,html.theme--catppuccin-latte .is-active.textarea,html.theme--catppuccin-latte .is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1e66f5;box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select select[disabled],html.theme--catppuccin-latte .textarea[disabled],html.theme--catppuccin-latte .input[disabled],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-latte .select select,fieldset[disabled] html.theme--catppuccin-latte .textarea,fieldset[disabled] html.theme--catppuccin-latte .input,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{background-color:#9ca0b0;border-color:#e6e9ef;box-shadow:none;color:#616587}html.theme--catppuccin-latte .select select[disabled]::-moz-placeholder,html.theme--catppuccin-latte .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-latte .input[disabled]::-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]:-moz-placeholder,html.theme--catppuccin-latte .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-latte .input[disabled]:-moz-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(97,101,135,0.3)}html.theme--catppuccin-latte .textarea,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-latte .textarea[readonly],html.theme--catppuccin-latte .input[readonly],html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-latte .is-white.textarea,html.theme--catppuccin-latte .is-white.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-latte .is-white.textarea:focus,html.theme--catppuccin-latte .is-white.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-latte .is-white.is-focused.textarea,html.theme--catppuccin-latte .is-white.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-white.textarea:active,html.theme--catppuccin-latte .is-white.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-latte .is-white.is-active.textarea,html.theme--catppuccin-latte .is-white.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .is-black.textarea,html.theme--catppuccin-latte .is-black.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-latte .is-black.textarea:focus,html.theme--catppuccin-latte .is-black.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-latte .is-black.is-focused.textarea,html.theme--catppuccin-latte .is-black.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-black.textarea:active,html.theme--catppuccin-latte .is-black.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-latte .is-black.is-active.textarea,html.theme--catppuccin-latte .is-black.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .is-light.textarea,html.theme--catppuccin-latte .is-light.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-latte .is-light.textarea:focus,html.theme--catppuccin-latte .is-light.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-latte .is-light.is-focused.textarea,html.theme--catppuccin-latte .is-light.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-light.textarea:active,html.theme--catppuccin-latte .is-light.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-latte .is-light.is-active.textarea,html.theme--catppuccin-latte .is-light.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .is-dark.textarea,html.theme--catppuccin-latte .content kbd.textarea,html.theme--catppuccin-latte .is-dark.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-latte .content kbd.input{border-color:#ccd0da}html.theme--catppuccin-latte .is-dark.textarea:focus,html.theme--catppuccin-latte .content kbd.textarea:focus,html.theme--catppuccin-latte .is-dark.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-latte .content kbd.input:focus,html.theme--catppuccin-latte .is-dark.is-focused.textarea,html.theme--catppuccin-latte .content kbd.is-focused.textarea,html.theme--catppuccin-latte .is-dark.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .content kbd.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-dark.textarea:active,html.theme--catppuccin-latte .content kbd.textarea:active,html.theme--catppuccin-latte .is-dark.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-latte .content kbd.input:active,html.theme--catppuccin-latte .is-dark.is-active.textarea,html.theme--catppuccin-latte .content kbd.is-active.textarea,html.theme--catppuccin-latte .is-dark.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .content kbd.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .is-primary.textarea,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink{border-color:#1e66f5}html.theme--catppuccin-latte .is-primary.textarea:focus,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-latte .is-primary.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-latte .is-primary.is-focused.textarea,html.theme--catppuccin-latte .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-latte .is-primary.textarea:active,html.theme--catppuccin-latte .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-latte .is-primary.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-latte .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-latte .is-primary.is-active.textarea,html.theme--catppuccin-latte .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-latte .is-primary.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-latte .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .is-link.textarea,html.theme--catppuccin-latte .is-link.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1e66f5}html.theme--catppuccin-latte .is-link.textarea:focus,html.theme--catppuccin-latte .is-link.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-latte .is-link.is-focused.textarea,html.theme--catppuccin-latte .is-link.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-link.textarea:active,html.theme--catppuccin-latte .is-link.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-latte .is-link.is-active.textarea,html.theme--catppuccin-latte .is-link.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .is-info.textarea,html.theme--catppuccin-latte .is-info.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#179299}html.theme--catppuccin-latte .is-info.textarea:focus,html.theme--catppuccin-latte .is-info.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-latte .is-info.is-focused.textarea,html.theme--catppuccin-latte .is-info.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-info.textarea:active,html.theme--catppuccin-latte .is-info.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-latte .is-info.is-active.textarea,html.theme--catppuccin-latte .is-info.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .is-success.textarea,html.theme--catppuccin-latte .is-success.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#40a02b}html.theme--catppuccin-latte .is-success.textarea:focus,html.theme--catppuccin-latte .is-success.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-latte .is-success.is-focused.textarea,html.theme--catppuccin-latte .is-success.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-success.textarea:active,html.theme--catppuccin-latte .is-success.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-latte .is-success.is-active.textarea,html.theme--catppuccin-latte .is-success.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .is-warning.textarea,html.theme--catppuccin-latte .is-warning.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#df8e1d}html.theme--catppuccin-latte .is-warning.textarea:focus,html.theme--catppuccin-latte .is-warning.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-latte .is-warning.is-focused.textarea,html.theme--catppuccin-latte .is-warning.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-warning.textarea:active,html.theme--catppuccin-latte .is-warning.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-latte .is-warning.is-active.textarea,html.theme--catppuccin-latte .is-warning.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .is-danger.textarea,html.theme--catppuccin-latte .is-danger.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#d20f39}html.theme--catppuccin-latte .is-danger.textarea:focus,html.theme--catppuccin-latte .is-danger.input:focus,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-latte .is-danger.is-focused.textarea,html.theme--catppuccin-latte .is-danger.is-focused.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-latte .is-danger.textarea:active,html.theme--catppuccin-latte .is-danger.input:active,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-latte .is-danger.is-active.textarea,html.theme--catppuccin-latte .is-danger.is-active.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .is-small.textarea,html.theme--catppuccin-latte .is-small.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-latte .is-medium.textarea,html.theme--catppuccin-latte .is-medium.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .is-large.textarea,html.theme--catppuccin-latte .is-large.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-latte .is-fullwidth.textarea,html.theme--catppuccin-latte .is-fullwidth.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-latte .is-inline.textarea,html.theme--catppuccin-latte .is-inline.input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-latte .input.is-rounded,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-latte .input.is-static,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-latte .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-latte .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-latte .textarea[rows]{height:initial}html.theme--catppuccin-latte .textarea.has-fixed-size{resize:none}html.theme--catppuccin-latte .radio,html.theme--catppuccin-latte .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-latte .radio input,html.theme--catppuccin-latte .checkbox input{cursor:pointer}html.theme--catppuccin-latte .radio:hover,html.theme--catppuccin-latte .checkbox:hover{color:#04a5e5}html.theme--catppuccin-latte .radio[disabled],html.theme--catppuccin-latte .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-latte .radio,fieldset[disabled] html.theme--catppuccin-latte .checkbox,html.theme--catppuccin-latte .radio input[disabled],html.theme--catppuccin-latte .checkbox input[disabled]{color:#616587;cursor:not-allowed}html.theme--catppuccin-latte .radio+.radio{margin-left:.5em}html.theme--catppuccin-latte .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-latte .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading)::after{border-color:#1e66f5;right:1.125em;z-index:4}html.theme--catppuccin-latte .select.is-rounded select,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-latte .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-latte .select select::-ms-expand{display:none}html.theme--catppuccin-latte .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-latte .select select:hover{border-color:#e6e9ef}html.theme--catppuccin-latte .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-latte .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-latte .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-latte .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#04a5e5}html.theme--catppuccin-latte .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-latte .select.is-white select{border-color:#fff}html.theme--catppuccin-latte .select.is-white select:hover,html.theme--catppuccin-latte .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-latte .select.is-white select:focus,html.theme--catppuccin-latte .select.is-white select.is-focused,html.theme--catppuccin-latte .select.is-white select:active,html.theme--catppuccin-latte .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-latte .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-latte .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-latte .select.is-black select:hover,html.theme--catppuccin-latte .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-latte .select.is-black select:focus,html.theme--catppuccin-latte .select.is-black select.is-focused,html.theme--catppuccin-latte .select.is-black select:active,html.theme--catppuccin-latte .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-latte .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-latte .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-latte .select.is-light select:hover,html.theme--catppuccin-latte .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-latte .select.is-light select:focus,html.theme--catppuccin-latte .select.is-light select.is-focused,html.theme--catppuccin-latte .select.is-light select:active,html.theme--catppuccin-latte .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-latte .select.is-dark:not(:hover)::after,html.theme--catppuccin-latte .content kbd.select:not(:hover)::after{border-color:#ccd0da}html.theme--catppuccin-latte .select.is-dark select,html.theme--catppuccin-latte .content kbd.select select{border-color:#ccd0da}html.theme--catppuccin-latte .select.is-dark select:hover,html.theme--catppuccin-latte .content kbd.select select:hover,html.theme--catppuccin-latte .select.is-dark select.is-hovered,html.theme--catppuccin-latte .content kbd.select select.is-hovered{border-color:#bdc2cf}html.theme--catppuccin-latte .select.is-dark select:focus,html.theme--catppuccin-latte .content kbd.select select:focus,html.theme--catppuccin-latte .select.is-dark select.is-focused,html.theme--catppuccin-latte .content kbd.select select.is-focused,html.theme--catppuccin-latte .select.is-dark select:active,html.theme--catppuccin-latte .content kbd.select select:active,html.theme--catppuccin-latte .select.is-dark select.is-active,html.theme--catppuccin-latte .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(204,208,218,0.25)}html.theme--catppuccin-latte .select.is-primary:not(:hover)::after,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-primary select,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-primary select:hover,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-latte .select.is-primary select.is-hovered,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#0b57ef}html.theme--catppuccin-latte .select.is-primary select:focus,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-latte .select.is-primary select.is-focused,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-latte .select.is-primary select:active,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-latte .select.is-primary select.is-active,html.theme--catppuccin-latte .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select.is-link:not(:hover)::after{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-link select{border-color:#1e66f5}html.theme--catppuccin-latte .select.is-link select:hover,html.theme--catppuccin-latte .select.is-link select.is-hovered{border-color:#0b57ef}html.theme--catppuccin-latte .select.is-link select:focus,html.theme--catppuccin-latte .select.is-link select.is-focused,html.theme--catppuccin-latte .select.is-link select:active,html.theme--catppuccin-latte .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(30,102,245,0.25)}html.theme--catppuccin-latte .select.is-info:not(:hover)::after{border-color:#179299}html.theme--catppuccin-latte .select.is-info select{border-color:#179299}html.theme--catppuccin-latte .select.is-info select:hover,html.theme--catppuccin-latte .select.is-info select.is-hovered{border-color:#147d83}html.theme--catppuccin-latte .select.is-info select:focus,html.theme--catppuccin-latte .select.is-info select.is-focused,html.theme--catppuccin-latte .select.is-info select:active,html.theme--catppuccin-latte .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(23,146,153,0.25)}html.theme--catppuccin-latte .select.is-success:not(:hover)::after{border-color:#40a02b}html.theme--catppuccin-latte .select.is-success select{border-color:#40a02b}html.theme--catppuccin-latte .select.is-success select:hover,html.theme--catppuccin-latte .select.is-success select.is-hovered{border-color:#388c26}html.theme--catppuccin-latte .select.is-success select:focus,html.theme--catppuccin-latte .select.is-success select.is-focused,html.theme--catppuccin-latte .select.is-success select:active,html.theme--catppuccin-latte .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(64,160,43,0.25)}html.theme--catppuccin-latte .select.is-warning:not(:hover)::after{border-color:#df8e1d}html.theme--catppuccin-latte .select.is-warning select{border-color:#df8e1d}html.theme--catppuccin-latte .select.is-warning select:hover,html.theme--catppuccin-latte .select.is-warning select.is-hovered{border-color:#c8801a}html.theme--catppuccin-latte .select.is-warning select:focus,html.theme--catppuccin-latte .select.is-warning select.is-focused,html.theme--catppuccin-latte .select.is-warning select:active,html.theme--catppuccin-latte .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(223,142,29,0.25)}html.theme--catppuccin-latte .select.is-danger:not(:hover)::after{border-color:#d20f39}html.theme--catppuccin-latte .select.is-danger select{border-color:#d20f39}html.theme--catppuccin-latte .select.is-danger select:hover,html.theme--catppuccin-latte .select.is-danger select.is-hovered{border-color:#ba0d33}html.theme--catppuccin-latte .select.is-danger select:focus,html.theme--catppuccin-latte .select.is-danger select.is-focused,html.theme--catppuccin-latte .select.is-danger select:active,html.theme--catppuccin-latte .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(210,15,57,0.25)}html.theme--catppuccin-latte .select.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-latte .select.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .select.is-large{font-size:1.5rem}html.theme--catppuccin-latte .select.is-disabled::after{border-color:#616587 !important;opacity:0.5}html.theme--catppuccin-latte .select.is-fullwidth{width:100%}html.theme--catppuccin-latte .select.is-fullwidth select{width:100%}html.theme--catppuccin-latte .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-latte .select.is-loading.is-small:after,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-latte .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-latte .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-latte .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-latte .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:hover .file-cta,html.theme--catppuccin-latte .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:focus .file-cta,html.theme--catppuccin-latte .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-latte .file.is-white:active .file-cta,html.theme--catppuccin-latte .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-latte .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-black:hover .file-cta,html.theme--catppuccin-latte .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-black:focus .file-cta,html.theme--catppuccin-latte .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-latte .file.is-black:active .file-cta,html.theme--catppuccin-latte .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:hover .file-cta,html.theme--catppuccin-latte .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:focus .file-cta,html.theme--catppuccin-latte .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-light:active .file-cta,html.theme--catppuccin-latte .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark .file-cta,html.theme--catppuccin-latte .content kbd.file .file-cta{background-color:#ccd0da;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:hover .file-cta,html.theme--catppuccin-latte .content kbd.file:hover .file-cta,html.theme--catppuccin-latte .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-latte .content kbd.file.is-hovered .file-cta{background-color:#c5c9d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:focus .file-cta,html.theme--catppuccin-latte .content kbd.file:focus .file-cta,html.theme--catppuccin-latte .file.is-dark.is-focused .file-cta,html.theme--catppuccin-latte .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(204,208,218,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-dark:active .file-cta,html.theme--catppuccin-latte .content kbd.file:active .file-cta,html.theme--catppuccin-latte .file.is-dark.is-active .file-cta,html.theme--catppuccin-latte .content kbd.file.is-active .file-cta{background-color:#bdc2cf;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .file.is-primary .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-primary:hover .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-latte .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-primary:focus .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-latte .file.is-primary.is-focused .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(30,102,245,0.25);color:#fff}html.theme--catppuccin-latte .file.is-primary:active .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-latte .file.is-primary.is-active .file-cta,html.theme--catppuccin-latte .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link .file-cta{background-color:#1e66f5;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link:hover .file-cta,html.theme--catppuccin-latte .file.is-link.is-hovered .file-cta{background-color:#125ef4;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-link:focus .file-cta,html.theme--catppuccin-latte .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(30,102,245,0.25);color:#fff}html.theme--catppuccin-latte .file.is-link:active .file-cta,html.theme--catppuccin-latte .file.is-link.is-active .file-cta{background-color:#0b57ef;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info .file-cta{background-color:#179299;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info:hover .file-cta,html.theme--catppuccin-latte .file.is-info.is-hovered .file-cta{background-color:#15878e;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-info:focus .file-cta,html.theme--catppuccin-latte .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(23,146,153,0.25);color:#fff}html.theme--catppuccin-latte .file.is-info:active .file-cta,html.theme--catppuccin-latte .file.is-info.is-active .file-cta{background-color:#147d83;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success .file-cta{background-color:#40a02b;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success:hover .file-cta,html.theme--catppuccin-latte .file.is-success.is-hovered .file-cta{background-color:#3c9628;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-success:focus .file-cta,html.theme--catppuccin-latte .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(64,160,43,0.25);color:#fff}html.theme--catppuccin-latte .file.is-success:active .file-cta,html.theme--catppuccin-latte .file.is-success.is-active .file-cta{background-color:#388c26;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning .file-cta{background-color:#df8e1d;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning:hover .file-cta,html.theme--catppuccin-latte .file.is-warning.is-hovered .file-cta{background-color:#d4871c;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-warning:focus .file-cta,html.theme--catppuccin-latte .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(223,142,29,0.25);color:#fff}html.theme--catppuccin-latte .file.is-warning:active .file-cta,html.theme--catppuccin-latte .file.is-warning.is-active .file-cta{background-color:#c8801a;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger .file-cta{background-color:#d20f39;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger:hover .file-cta,html.theme--catppuccin-latte .file.is-danger.is-hovered .file-cta{background-color:#c60e36;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-danger:focus .file-cta,html.theme--catppuccin-latte .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(210,15,57,0.25);color:#fff}html.theme--catppuccin-latte .file.is-danger:active .file-cta,html.theme--catppuccin-latte .file.is-danger.is-active .file-cta{background-color:#ba0d33;border-color:transparent;color:#fff}html.theme--catppuccin-latte .file.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-latte .file.is-normal{font-size:1rem}html.theme--catppuccin-latte .file.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-latte .file.is-large{font-size:1.5rem}html.theme--catppuccin-latte .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-latte .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-latte .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-latte .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-latte .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-latte .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-latte .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-latte .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-latte .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-latte .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-latte .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-latte .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-latte .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-latte .file.is-centered{justify-content:center}html.theme--catppuccin-latte .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-latte .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-latte .file.is-right{justify-content:flex-end}html.theme--catppuccin-latte .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-latte .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-latte .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-latte .file-label:hover .file-cta{background-color:#c5c9d5;color:#41445a}html.theme--catppuccin-latte .file-label:hover .file-name{border-color:#a5a9b8}html.theme--catppuccin-latte .file-label:active .file-cta{background-color:#bdc2cf;color:#41445a}html.theme--catppuccin-latte .file-label:active .file-name{border-color:#9ea2b3}html.theme--catppuccin-latte .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-latte .file-cta,html.theme--catppuccin-latte .file-name{border-color:#acb0be;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-latte .file-cta{background-color:#ccd0da;color:#4c4f69}html.theme--catppuccin-latte .file-name{border-color:#acb0be;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-latte .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-latte .file-icon .fa{font-size:14px}html.theme--catppuccin-latte .label{color:#41445a;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-latte .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-latte .label.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-latte .label.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .label.is-large{font-size:1.5rem}html.theme--catppuccin-latte .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-latte .help.is-white{color:#fff}html.theme--catppuccin-latte .help.is-black{color:#0a0a0a}html.theme--catppuccin-latte .help.is-light{color:#f5f5f5}html.theme--catppuccin-latte .help.is-dark,html.theme--catppuccin-latte .content kbd.help{color:#ccd0da}html.theme--catppuccin-latte .help.is-primary,html.theme--catppuccin-latte .docstring>section>a.help.docs-sourcelink{color:#1e66f5}html.theme--catppuccin-latte .help.is-link{color:#1e66f5}html.theme--catppuccin-latte .help.is-info{color:#179299}html.theme--catppuccin-latte .help.is-success{color:#40a02b}html.theme--catppuccin-latte .help.is-warning{color:#df8e1d}html.theme--catppuccin-latte .help.is-danger{color:#d20f39}html.theme--catppuccin-latte .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-latte .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-latte .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-latte .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-latte .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-latte .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-latte #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-latte .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-latte .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-latte .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-latte .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-latte .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-latte .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-latte .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-latte .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-latte .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-latte .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field.is-horizontal{display:flex}}html.theme--catppuccin-latte .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-latte .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-latte .field-label.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-latte .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-latte .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-latte .field-body .field{margin-bottom:0}html.theme--catppuccin-latte .field-body>.field{flex-shrink:1}html.theme--catppuccin-latte .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-latte .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-latte .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-latte .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-latte .control.has-icons-right .select:focus~.icon{color:#ccd0da}html.theme--catppuccin-latte .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-latte .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-latte .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-latte .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-latte .control.has-icons-left .icon,html.theme--catppuccin-latte .control.has-icons-right .icon{color:#acb0be;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-latte .control.has-icons-left .input,html.theme--catppuccin-latte .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-latte .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-latte .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-latte .control.has-icons-right .input,html.theme--catppuccin-latte .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-latte .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-latte .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-latte .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-latte .control.is-loading.is-small:after,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-latte .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-latte .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-latte .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-latte .breadcrumb a{align-items:center;color:#1e66f5;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-latte .breadcrumb a:hover{color:#04a5e5}html.theme--catppuccin-latte .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-latte .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-latte .breadcrumb li.is-active a{color:#41445a;cursor:default;pointer-events:none}html.theme--catppuccin-latte .breadcrumb li+li::before{color:#9ca0b0;content:"\0002f"}html.theme--catppuccin-latte .breadcrumb ul,html.theme--catppuccin-latte .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-latte .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-latte .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-latte .breadcrumb.is-centered ol,html.theme--catppuccin-latte .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-latte .breadcrumb.is-right ol,html.theme--catppuccin-latte .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-latte .breadcrumb.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-latte .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-latte .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-latte .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-latte .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-latte .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-latte .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#4c4f69;max-width:100%;position:relative}html.theme--catppuccin-latte .card-footer:first-child,html.theme--catppuccin-latte .card-content:first-child,html.theme--catppuccin-latte .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-latte .card-footer:last-child,html.theme--catppuccin-latte .card-content:last-child,html.theme--catppuccin-latte .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-latte .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-latte .card-header-title{align-items:center;color:#41445a;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-latte .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-latte .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-latte .card-image{display:block;position:relative}html.theme--catppuccin-latte .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-latte .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-latte .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-latte .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-latte .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-latte .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-latte .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-latte .dropdown.is-active .dropdown-menu,html.theme--catppuccin-latte .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-latte .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-latte .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-latte .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-latte .dropdown-content{background-color:#e6e9ef;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-latte .dropdown-item{color:#4c4f69;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-latte a.dropdown-item,html.theme--catppuccin-latte button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-latte a.dropdown-item:hover,html.theme--catppuccin-latte button.dropdown-item:hover{background-color:#e6e9ef;color:#0a0a0a}html.theme--catppuccin-latte a.dropdown-item.is-active,html.theme--catppuccin-latte button.dropdown-item.is-active{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-latte .level{align-items:center;justify-content:space-between}html.theme--catppuccin-latte .level code{border-radius:.4em}html.theme--catppuccin-latte .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-latte .level.is-mobile{display:flex}html.theme--catppuccin-latte .level.is-mobile .level-left,html.theme--catppuccin-latte .level.is-mobile .level-right{display:flex}html.theme--catppuccin-latte .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-latte .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-latte .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level{display:flex}html.theme--catppuccin-latte .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-latte .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-latte .level-item .title,html.theme--catppuccin-latte .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-latte .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-latte .level-left,html.theme--catppuccin-latte .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .level-left .level-item.is-flexible,html.theme--catppuccin-latte .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-left .level-item:not(:last-child),html.theme--catppuccin-latte .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-latte .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-latte .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-left{display:flex}}html.theme--catppuccin-latte .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .level-right{display:flex}}html.theme--catppuccin-latte .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-latte .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-latte .media .media{border-top:1px solid rgba(172,176,190,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-latte .media .media .content:not(:last-child),html.theme--catppuccin-latte .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-latte .media .media .media{padding-top:.5rem}html.theme--catppuccin-latte .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-latte .media+.media{border-top:1px solid rgba(172,176,190,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-latte .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-latte .media-left,html.theme--catppuccin-latte .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .media-left{margin-right:1rem}html.theme--catppuccin-latte .media-right{margin-left:1rem}html.theme--catppuccin-latte .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-latte .media-content{overflow-x:auto}}html.theme--catppuccin-latte .menu{font-size:1rem}html.theme--catppuccin-latte .menu.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-latte .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .menu.is-large{font-size:1.5rem}html.theme--catppuccin-latte .menu-list{line-height:1.25}html.theme--catppuccin-latte .menu-list a{border-radius:3px;color:#4c4f69;display:block;padding:0.5em 0.75em}html.theme--catppuccin-latte .menu-list a:hover{background-color:#e6e9ef;color:#41445a}html.theme--catppuccin-latte .menu-list a.is-active{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .menu-list li ul{border-left:1px solid #acb0be;margin:.75em;padding-left:.75em}html.theme--catppuccin-latte .menu-label{color:#616587;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-latte .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-latte .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-latte .message{background-color:#e6e9ef;border-radius:.4em;font-size:1rem}html.theme--catppuccin-latte .message strong{color:currentColor}html.theme--catppuccin-latte .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-latte .message.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-latte .message.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .message.is-large{font-size:1.5rem}html.theme--catppuccin-latte .message.is-white{background-color:#fff}html.theme--catppuccin-latte .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-latte .message.is-black{background-color:#fafafa}html.theme--catppuccin-latte .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-latte .message.is-light{background-color:#fafafa}html.theme--catppuccin-latte .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-latte .message.is-dark,html.theme--catppuccin-latte .content kbd.message{background-color:#f9fafb}html.theme--catppuccin-latte .message.is-dark .message-header,html.theme--catppuccin-latte .content kbd.message .message-header{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .message.is-dark .message-body,html.theme--catppuccin-latte .content kbd.message .message-body{border-color:#ccd0da}html.theme--catppuccin-latte .message.is-primary,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink{background-color:#ebf2fe}html.theme--catppuccin-latte .message.is-primary .message-header,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink .message-header{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .message.is-primary .message-body,html.theme--catppuccin-latte .docstring>section>a.message.docs-sourcelink .message-body{border-color:#1e66f5;color:#0a52e1}html.theme--catppuccin-latte .message.is-link{background-color:#ebf2fe}html.theme--catppuccin-latte .message.is-link .message-header{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .message.is-link .message-body{border-color:#1e66f5;color:#0a52e1}html.theme--catppuccin-latte .message.is-info{background-color:#edfcfc}html.theme--catppuccin-latte .message.is-info .message-header{background-color:#179299;color:#fff}html.theme--catppuccin-latte .message.is-info .message-body{border-color:#179299;color:#1cb2ba}html.theme--catppuccin-latte .message.is-success{background-color:#f1fbef}html.theme--catppuccin-latte .message.is-success .message-header{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .message.is-success .message-body{border-color:#40a02b;color:#40a12b}html.theme--catppuccin-latte .message.is-warning{background-color:#fdf6ed}html.theme--catppuccin-latte .message.is-warning .message-header{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .message.is-warning .message-body{border-color:#df8e1d;color:#9e6515}html.theme--catppuccin-latte .message.is-danger{background-color:#feecf0}html.theme--catppuccin-latte .message.is-danger .message-header{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .message.is-danger .message-body{border-color:#d20f39;color:#e9113f}html.theme--catppuccin-latte .message-header{align-items:center;background-color:#4c4f69;border-radius:.4em .4em 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-latte .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-latte .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-latte .message-body{border-color:#acb0be;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#4c4f69;padding:1.25em 1.5em}html.theme--catppuccin-latte .message-body code,html.theme--catppuccin-latte .message-body pre{background-color:#fff}html.theme--catppuccin-latte .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-latte .modal.is-active{display:flex}html.theme--catppuccin-latte .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-latte .modal-content,html.theme--catppuccin-latte .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-latte .modal-content,html.theme--catppuccin-latte .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-latte .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-latte .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-latte .modal-card-head,html.theme--catppuccin-latte .modal-card-foot{align-items:center;background-color:#e6e9ef;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-latte .modal-card-head{border-bottom:1px solid #acb0be;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-latte .modal-card-title{color:#4c4f69;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-latte .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #acb0be}html.theme--catppuccin-latte .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-latte .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#eff1f5;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-latte .navbar{background-color:#1e66f5;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-latte .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-latte .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-latte .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-latte .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-latte .navbar.is-dark,html.theme--catppuccin-latte .content kbd.navbar{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-burger,html.theme--catppuccin-latte .content kbd.navbar .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-latte .content kbd.navbar .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#ccd0da;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-latte .navbar.is-primary,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-burger,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5;color:#fff}}html.theme--catppuccin-latte .navbar.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5;color:#fff}}html.theme--catppuccin-latte .navbar.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#179299;color:#fff}}html.theme--catppuccin-latte .navbar.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#40a02b;color:#fff}}html.theme--catppuccin-latte .navbar.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#df8e1d;color:#fff}}html.theme--catppuccin-latte .navbar.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-latte .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#d20f39;color:#fff}}html.theme--catppuccin-latte .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-latte .navbar.has-shadow{box-shadow:0 2px 0 0 #e6e9ef}html.theme--catppuccin-latte .navbar.is-fixed-bottom,html.theme--catppuccin-latte .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #e6e9ef}html.theme--catppuccin-latte .navbar.is-fixed-top{top:0}html.theme--catppuccin-latte html.has-navbar-fixed-top,html.theme--catppuccin-latte body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom,html.theme--catppuccin-latte body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-latte .navbar-brand,html.theme--catppuccin-latte .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-latte .navbar-brand a.navbar-item:focus,html.theme--catppuccin-latte .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-latte .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-latte .navbar-burger{color:#4c4f69;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-latte .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-latte .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-latte .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-latte .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-latte .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-latte .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-latte .navbar-menu{display:none}html.theme--catppuccin-latte .navbar-item,html.theme--catppuccin-latte .navbar-link{color:#4c4f69;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-latte .navbar-item .icon:only-child,html.theme--catppuccin-latte .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-latte a.navbar-item,html.theme--catppuccin-latte .navbar-link{cursor:pointer}html.theme--catppuccin-latte a.navbar-item:focus,html.theme--catppuccin-latte a.navbar-item:focus-within,html.theme--catppuccin-latte a.navbar-item:hover,html.theme--catppuccin-latte a.navbar-item.is-active,html.theme--catppuccin-latte .navbar-link:focus,html.theme--catppuccin-latte .navbar-link:focus-within,html.theme--catppuccin-latte .navbar-link:hover,html.theme--catppuccin-latte .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}html.theme--catppuccin-latte .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .navbar-item img{max-height:1.75rem}html.theme--catppuccin-latte .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-latte .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-latte .navbar-item.is-tab:focus,html.theme--catppuccin-latte .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1e66f5}html.theme--catppuccin-latte .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1e66f5;border-bottom-style:solid;border-bottom-width:3px;color:#1e66f5;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-latte .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-latte .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-latte .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-latte .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-latte .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .navbar>.container{display:block}html.theme--catppuccin-latte .navbar-brand .navbar-item,html.theme--catppuccin-latte .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-latte .navbar-link::after{display:none}html.theme--catppuccin-latte .navbar-menu{background-color:#1e66f5;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-latte .navbar-menu.is-active{display:block}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch,html.theme--catppuccin-latte .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-latte .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-latte .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-latte .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-latte html.has-navbar-fixed-top-touch,html.theme--catppuccin-latte body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-latte body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .navbar,html.theme--catppuccin-latte .navbar-menu,html.theme--catppuccin-latte .navbar-start,html.theme--catppuccin-latte .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-latte .navbar{min-height:4rem}html.theme--catppuccin-latte .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-latte .navbar.is-spaced .navbar-start,html.theme--catppuccin-latte .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-latte .navbar.is-spaced a.navbar-item,html.theme--catppuccin-latte .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-latte .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-latte .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-latte .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8c8fa1}html.theme--catppuccin-latte .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}html.theme--catppuccin-latte .navbar-burger{display:none}html.theme--catppuccin-latte .navbar-item,html.theme--catppuccin-latte .navbar-link{align-items:center;display:flex}html.theme--catppuccin-latte .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-latte .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-latte .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-latte .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-latte .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-latte .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-latte .navbar-dropdown{background-color:#1e66f5;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-latte .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-latte .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8c8fa1}html.theme--catppuccin-latte .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1e66f5}.navbar.is-spaced html.theme--catppuccin-latte .navbar-dropdown,html.theme--catppuccin-latte .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-latte .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-latte .navbar-divider{display:block}html.theme--catppuccin-latte .navbar>.container .navbar-brand,html.theme--catppuccin-latte .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-latte .navbar>.container .navbar-menu,html.theme--catppuccin-latte .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-latte .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-latte .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-latte .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-latte html.has-navbar-fixed-top-desktop,html.theme--catppuccin-latte body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-latte html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-latte body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-latte html.has-spaced-navbar-fixed-top,html.theme--catppuccin-latte body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-latte html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-latte body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-latte a.navbar-item.is-active,html.theme--catppuccin-latte .navbar-link.is-active{color:#1e66f5}html.theme--catppuccin-latte a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-latte .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-latte .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-latte .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-latte .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-latte .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-latte .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-latte .pagination.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-latte .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-latte .pagination.is-rounded .pagination-previous,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-latte .pagination.is-rounded .pagination-next,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-latte .pagination.is-rounded .pagination-link,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-latte .pagination,html.theme--catppuccin-latte .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link{border-color:#acb0be;color:#1e66f5;min-width:2.5em}html.theme--catppuccin-latte .pagination-previous:hover,html.theme--catppuccin-latte .pagination-next:hover,html.theme--catppuccin-latte .pagination-link:hover{border-color:#9ca0b0;color:#04a5e5}html.theme--catppuccin-latte .pagination-previous:focus,html.theme--catppuccin-latte .pagination-next:focus,html.theme--catppuccin-latte .pagination-link:focus{border-color:#9ca0b0}html.theme--catppuccin-latte .pagination-previous:active,html.theme--catppuccin-latte .pagination-next:active,html.theme--catppuccin-latte .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-latte .pagination-previous[disabled],html.theme--catppuccin-latte .pagination-previous.is-disabled,html.theme--catppuccin-latte .pagination-next[disabled],html.theme--catppuccin-latte .pagination-next.is-disabled,html.theme--catppuccin-latte .pagination-link[disabled],html.theme--catppuccin-latte .pagination-link.is-disabled{background-color:#acb0be;border-color:#acb0be;box-shadow:none;color:#616587;opacity:0.5}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-latte .pagination-link.is-current{background-color:#1e66f5;border-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .pagination-ellipsis{color:#9ca0b0;pointer-events:none}html.theme--catppuccin-latte .pagination-list{flex-wrap:wrap}html.theme--catppuccin-latte .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-latte .pagination{flex-wrap:wrap}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-latte .pagination-previous{order:2}html.theme--catppuccin-latte .pagination-next{order:3}html.theme--catppuccin-latte .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-latte .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-latte .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-latte .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-latte .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-latte .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-latte .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-latte .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-latte .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-latte .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-latte .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-latte .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-latte .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-latte .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-latte .panel.is-dark .panel-heading,html.theme--catppuccin-latte .content kbd.panel .panel-heading{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-latte .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#ccd0da}html.theme--catppuccin-latte .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-latte .content kbd.panel .panel-block.is-active .panel-icon{color:#ccd0da}html.theme--catppuccin-latte .panel.is-primary .panel-heading,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#1e66f5}html.theme--catppuccin-latte .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-latte .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel.is-link .panel-heading{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1e66f5}html.theme--catppuccin-latte .panel.is-link .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel.is-info .panel-heading{background-color:#179299;color:#fff}html.theme--catppuccin-latte .panel.is-info .panel-tabs a.is-active{border-bottom-color:#179299}html.theme--catppuccin-latte .panel.is-info .panel-block.is-active .panel-icon{color:#179299}html.theme--catppuccin-latte .panel.is-success .panel-heading{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .panel.is-success .panel-tabs a.is-active{border-bottom-color:#40a02b}html.theme--catppuccin-latte .panel.is-success .panel-block.is-active .panel-icon{color:#40a02b}html.theme--catppuccin-latte .panel.is-warning .panel-heading{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#df8e1d}html.theme--catppuccin-latte .panel.is-warning .panel-block.is-active .panel-icon{color:#df8e1d}html.theme--catppuccin-latte .panel.is-danger .panel-heading{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#d20f39}html.theme--catppuccin-latte .panel.is-danger .panel-block.is-active .panel-icon{color:#d20f39}html.theme--catppuccin-latte .panel-tabs:not(:last-child),html.theme--catppuccin-latte .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-latte .panel-heading{background-color:#bcc0cc;border-radius:8px 8px 0 0;color:#41445a;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-latte .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-latte .panel-tabs a{border-bottom:1px solid #acb0be;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-latte .panel-tabs a.is-active{border-bottom-color:#bcc0cc;color:#0b57ef}html.theme--catppuccin-latte .panel-list a{color:#4c4f69}html.theme--catppuccin-latte .panel-list a:hover{color:#1e66f5}html.theme--catppuccin-latte .panel-block{align-items:center;color:#41445a;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-latte .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-latte .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-latte .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-latte .panel-block.is-active{border-left-color:#1e66f5;color:#0b57ef}html.theme--catppuccin-latte .panel-block.is-active .panel-icon{color:#1e66f5}html.theme--catppuccin-latte .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-latte a.panel-block,html.theme--catppuccin-latte label.panel-block{cursor:pointer}html.theme--catppuccin-latte a.panel-block:hover,html.theme--catppuccin-latte label.panel-block:hover{background-color:#e6e9ef}html.theme--catppuccin-latte .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#616587;margin-right:.75em}html.theme--catppuccin-latte .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-latte .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-latte .tabs a{align-items:center;border-bottom-color:#acb0be;border-bottom-style:solid;border-bottom-width:1px;color:#4c4f69;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-latte .tabs a:hover{border-bottom-color:#41445a;color:#41445a}html.theme--catppuccin-latte .tabs li{display:block}html.theme--catppuccin-latte .tabs li.is-active a{border-bottom-color:#1e66f5;color:#1e66f5}html.theme--catppuccin-latte .tabs ul{align-items:center;border-bottom-color:#acb0be;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-latte .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-latte .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-latte .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-latte .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-latte .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-latte .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-latte .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-latte .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-latte .tabs.is-boxed a:hover{background-color:#e6e9ef;border-bottom-color:#acb0be}html.theme--catppuccin-latte .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#acb0be;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-latte .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-latte .tabs.is-toggle a{border-color:#acb0be;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-latte .tabs.is-toggle a:hover{background-color:#e6e9ef;border-color:#9ca0b0;z-index:2}html.theme--catppuccin-latte .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-latte .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-latte .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-latte .tabs.is-toggle li.is-active a{background-color:#1e66f5;border-color:#1e66f5;color:#fff;z-index:1}html.theme--catppuccin-latte .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-latte .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-latte .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-latte .tabs.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-latte .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-latte .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-latte .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-latte .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-latte .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-latte .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-latte .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-latte .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-latte .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-latte .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-latte .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .column.is-narrow,html.theme--catppuccin-latte .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full,html.theme--catppuccin-latte .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters,html.theme--catppuccin-latte .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds,html.theme--catppuccin-latte .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half,html.theme--catppuccin-latte .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third,html.theme--catppuccin-latte .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter,html.theme--catppuccin-latte .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth,html.theme--catppuccin-latte .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths,html.theme--catppuccin-latte .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths,html.theme--catppuccin-latte .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths,html.theme--catppuccin-latte .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters,html.theme--catppuccin-latte .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds,html.theme--catppuccin-latte .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half,html.theme--catppuccin-latte .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third,html.theme--catppuccin-latte .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter,html.theme--catppuccin-latte .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth,html.theme--catppuccin-latte .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths,html.theme--catppuccin-latte .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths,html.theme--catppuccin-latte .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths,html.theme--catppuccin-latte .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-latte .column.is-0,html.theme--catppuccin-latte .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0,html.theme--catppuccin-latte .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-latte .column.is-1,html.theme--catppuccin-latte .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1,html.theme--catppuccin-latte .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2,html.theme--catppuccin-latte .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2,html.theme--catppuccin-latte .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3,html.theme--catppuccin-latte .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3,html.theme--catppuccin-latte .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-latte .column.is-4,html.theme--catppuccin-latte .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4,html.theme--catppuccin-latte .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5,html.theme--catppuccin-latte .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5,html.theme--catppuccin-latte .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6,html.theme--catppuccin-latte .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6,html.theme--catppuccin-latte .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-latte .column.is-7,html.theme--catppuccin-latte .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7,html.theme--catppuccin-latte .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8,html.theme--catppuccin-latte .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8,html.theme--catppuccin-latte .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9,html.theme--catppuccin-latte .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9,html.theme--catppuccin-latte .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-latte .column.is-10,html.theme--catppuccin-latte .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10,html.theme--catppuccin-latte .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11,html.theme--catppuccin-latte .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11,html.theme--catppuccin-latte .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12,html.theme--catppuccin-latte .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12,html.theme--catppuccin-latte .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-latte .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-latte .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-latte .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-latte .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-latte .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-latte .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-latte .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-latte .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-latte .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-latte .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-latte .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-latte .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-latte .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-latte .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-latte .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-latte .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-latte .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-latte .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-latte .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-latte .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-latte .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-latte .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-latte .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-latte .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-latte .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-latte .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-latte .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-latte .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-latte .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-latte .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-latte .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-latte .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-latte .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-latte .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-latte .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-latte .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-latte .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-latte .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-latte .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-latte .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-latte .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-latte .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-latte .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-latte .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-latte .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-latte .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-latte .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-latte .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-latte .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-latte .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-latte .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-latte .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-latte .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-latte .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-latte .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-latte .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-latte .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-latte .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-latte .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-latte .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-latte .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-latte .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-latte .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-latte .columns.is-centered{justify-content:center}html.theme--catppuccin-latte .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-latte .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-latte .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-latte .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-latte .columns.is-mobile{display:flex}html.theme--catppuccin-latte .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-latte .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-desktop{display:flex}}html.theme--catppuccin-latte .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-latte .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-latte .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-latte .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-latte .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-latte .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-latte .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-latte .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-latte .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-latte .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-latte .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-latte .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-latte .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-latte .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-latte .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-latte .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-latte .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-latte .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-latte .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-latte .tile.is-child{margin:0 !important}html.theme--catppuccin-latte .tile.is-parent{padding:.75rem}html.theme--catppuccin-latte .tile.is-vertical{flex-direction:column}html.theme--catppuccin-latte .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .tile:not(.is-child){display:flex}html.theme--catppuccin-latte .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-latte .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-latte .tile.is-3{flex:none;width:25%}html.theme--catppuccin-latte .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-latte .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-latte .tile.is-6{flex:none;width:50%}html.theme--catppuccin-latte .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-latte .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-latte .tile.is-9{flex:none;width:75%}html.theme--catppuccin-latte .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-latte .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-latte .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-latte .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-latte .hero .navbar{background:none}html.theme--catppuccin-latte .hero .tabs ul{border-bottom:none}html.theme--catppuccin-latte .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-white strong{color:inherit}html.theme--catppuccin-latte .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-latte .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-latte .hero.is-white .navbar-item,html.theme--catppuccin-latte .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-latte .hero.is-white a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-white .navbar-link:hover,html.theme--catppuccin-latte .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-latte .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-latte .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-latte .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-black strong{color:inherit}html.theme--catppuccin-latte .hero.is-black .title{color:#fff}html.theme--catppuccin-latte .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-latte .hero.is-black .navbar-item,html.theme--catppuccin-latte .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-black a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-black .navbar-link:hover,html.theme--catppuccin-latte .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-latte .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-latte .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-latte .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-light strong{color:inherit}html.theme--catppuccin-latte .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-latte .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-latte .hero.is-light .navbar-item,html.theme--catppuccin-latte .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-light .navbar-link:hover,html.theme--catppuccin-latte .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-latte .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-latte .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-latte .hero.is-dark,html.theme--catppuccin-latte .content kbd.hero{background-color:#ccd0da;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-dark strong,html.theme--catppuccin-latte .content kbd.hero strong{color:inherit}html.theme--catppuccin-latte .hero.is-dark .title,html.theme--catppuccin-latte .content kbd.hero .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .subtitle,html.theme--catppuccin-latte .content kbd.hero .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-latte .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-latte .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-dark .subtitle strong,html.theme--catppuccin-latte .content kbd.hero .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-dark .navbar-menu,html.theme--catppuccin-latte .content kbd.hero .navbar-menu{background-color:#ccd0da}}html.theme--catppuccin-latte .hero.is-dark .navbar-item,html.theme--catppuccin-latte .content kbd.hero .navbar-item,html.theme--catppuccin-latte .hero.is-dark .navbar-link,html.theme--catppuccin-latte .content kbd.hero .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-latte .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-latte .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-dark .navbar-link:hover,html.theme--catppuccin-latte .content kbd.hero .navbar-link:hover,html.theme--catppuccin-latte .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-latte .content kbd.hero .navbar-link.is-active{background-color:#bdc2cf;color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .tabs a,html.theme--catppuccin-latte .content kbd.hero .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-latte .hero.is-dark .tabs a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs li.is-active a{color:#ccd0da !important;opacity:1}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ccd0da}html.theme--catppuccin-latte .hero.is-dark.is-bold,html.theme--catppuccin-latte .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #a7b8cc 0%, #ccd0da 71%, #d9dbe6 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-latte .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a7b8cc 0%, #ccd0da 71%, #d9dbe6 100%)}}html.theme--catppuccin-latte .hero.is-primary,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-primary strong,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-latte .hero.is-primary .title,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-latte .hero.is-primary .subtitle,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-primary .subtitle strong,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-primary .navbar-menu,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#1e66f5}}html.theme--catppuccin-latte .hero.is-primary .navbar-item,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-latte .hero.is-primary .navbar-link,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-primary .navbar-link:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-latte .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .hero.is-primary .tabs a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-primary .tabs a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#1e66f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .hero.is-primary.is-bold,html.theme--catppuccin-latte .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-latte .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}}html.theme--catppuccin-latte .hero.is-link{background-color:#1e66f5;color:#fff}html.theme--catppuccin-latte .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-link strong{color:inherit}html.theme--catppuccin-latte .hero.is-link .title{color:#fff}html.theme--catppuccin-latte .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-link .navbar-menu{background-color:#1e66f5}}html.theme--catppuccin-latte .hero.is-link .navbar-item,html.theme--catppuccin-latte .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-link a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-link .navbar-link:hover,html.theme--catppuccin-latte .hero.is-link .navbar-link.is-active{background-color:#0b57ef;color:#fff}html.theme--catppuccin-latte .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-link .tabs li.is-active a{color:#1e66f5 !important;opacity:1}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1e66f5}html.theme--catppuccin-latte .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0070e0 0%, #1e66f5 71%, #3153fb 100%)}}html.theme--catppuccin-latte .hero.is-info{background-color:#179299;color:#fff}html.theme--catppuccin-latte .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-info strong{color:inherit}html.theme--catppuccin-latte .hero.is-info .title{color:#fff}html.theme--catppuccin-latte .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-info .navbar-menu{background-color:#179299}}html.theme--catppuccin-latte .hero.is-info .navbar-item,html.theme--catppuccin-latte .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-info a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-info .navbar-link:hover,html.theme--catppuccin-latte .hero.is-info .navbar-link.is-active{background-color:#147d83;color:#fff}html.theme--catppuccin-latte .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-info .tabs li.is-active a{color:#179299 !important;opacity:1}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#179299}html.theme--catppuccin-latte .hero.is-info.is-bold{background-image:linear-gradient(141deg, #0a7367 0%, #179299 71%, #1591b4 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0a7367 0%, #179299 71%, #1591b4 100%)}}html.theme--catppuccin-latte .hero.is-success{background-color:#40a02b;color:#fff}html.theme--catppuccin-latte .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-success strong{color:inherit}html.theme--catppuccin-latte .hero.is-success .title{color:#fff}html.theme--catppuccin-latte .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-success .navbar-menu{background-color:#40a02b}}html.theme--catppuccin-latte .hero.is-success .navbar-item,html.theme--catppuccin-latte .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-success a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-success .navbar-link:hover,html.theme--catppuccin-latte .hero.is-success .navbar-link.is-active{background-color:#388c26;color:#fff}html.theme--catppuccin-latte .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-success .tabs li.is-active a{color:#40a02b !important;opacity:1}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#40a02b}html.theme--catppuccin-latte .hero.is-success.is-bold{background-image:linear-gradient(141deg, #3c7f19 0%, #40a02b 71%, #2dba2b 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #3c7f19 0%, #40a02b 71%, #2dba2b 100%)}}html.theme--catppuccin-latte .hero.is-warning{background-color:#df8e1d;color:#fff}html.theme--catppuccin-latte .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-warning strong{color:inherit}html.theme--catppuccin-latte .hero.is-warning .title{color:#fff}html.theme--catppuccin-latte .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-warning .navbar-menu{background-color:#df8e1d}}html.theme--catppuccin-latte .hero.is-warning .navbar-item,html.theme--catppuccin-latte .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-warning .navbar-link:hover,html.theme--catppuccin-latte .hero.is-warning .navbar-link.is-active{background-color:#c8801a;color:#fff}html.theme--catppuccin-latte .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-warning .tabs li.is-active a{color:#df8e1d !important;opacity:1}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#df8e1d}html.theme--catppuccin-latte .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #bc560d 0%, #df8e1d 71%, #eaba2b 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #bc560d 0%, #df8e1d 71%, #eaba2b 100%)}}html.theme--catppuccin-latte .hero.is-danger{background-color:#d20f39;color:#fff}html.theme--catppuccin-latte .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-latte .hero.is-danger strong{color:inherit}html.theme--catppuccin-latte .hero.is-danger .title{color:#fff}html.theme--catppuccin-latte .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-latte .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-latte .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .hero.is-danger .navbar-menu{background-color:#d20f39}}html.theme--catppuccin-latte .hero.is-danger .navbar-item,html.theme--catppuccin-latte .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-latte .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-latte .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-latte .hero.is-danger .navbar-link:hover,html.theme--catppuccin-latte .hero.is-danger .navbar-link.is-active{background-color:#ba0d33;color:#fff}html.theme--catppuccin-latte .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-latte .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-latte .hero.is-danger .tabs li.is-active a{color:#d20f39 !important;opacity:1}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-latte .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#d20f39}html.theme--catppuccin-latte .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ab0343 0%, #d20f39 71%, #f00a16 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ab0343 0%, #d20f39 71%, #f00a16 100%)}}html.theme--catppuccin-latte .hero.is-small .hero-body,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-latte .hero.is-halfheight .hero-body,html.theme--catppuccin-latte .hero.is-fullheight .hero-body,html.theme--catppuccin-latte .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-latte .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-latte .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-latte .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-latte .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-latte .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-latte .hero-video{overflow:hidden}html.theme--catppuccin-latte .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-latte .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero-video{display:none}}html.theme--catppuccin-latte .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-latte .hero-buttons .button{display:flex}html.theme--catppuccin-latte .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-latte .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-latte .hero-head,html.theme--catppuccin-latte .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-latte .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-latte .hero-body{padding:3rem 3rem}}html.theme--catppuccin-latte .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-latte .section{padding:3rem 3rem}html.theme--catppuccin-latte .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-latte .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-latte .footer{background-color:#e6e9ef;padding:3rem 1.5rem 6rem}html.theme--catppuccin-latte h1 .docs-heading-anchor,html.theme--catppuccin-latte h1 .docs-heading-anchor:hover,html.theme--catppuccin-latte h1 .docs-heading-anchor:visited,html.theme--catppuccin-latte h2 .docs-heading-anchor,html.theme--catppuccin-latte h2 .docs-heading-anchor:hover,html.theme--catppuccin-latte h2 .docs-heading-anchor:visited,html.theme--catppuccin-latte h3 .docs-heading-anchor,html.theme--catppuccin-latte h3 .docs-heading-anchor:hover,html.theme--catppuccin-latte h3 .docs-heading-anchor:visited,html.theme--catppuccin-latte h4 .docs-heading-anchor,html.theme--catppuccin-latte h4 .docs-heading-anchor:hover,html.theme--catppuccin-latte h4 .docs-heading-anchor:visited,html.theme--catppuccin-latte h5 .docs-heading-anchor,html.theme--catppuccin-latte h5 .docs-heading-anchor:hover,html.theme--catppuccin-latte h5 .docs-heading-anchor:visited,html.theme--catppuccin-latte h6 .docs-heading-anchor,html.theme--catppuccin-latte h6 .docs-heading-anchor:hover,html.theme--catppuccin-latte h6 .docs-heading-anchor:visited{color:#4c4f69}html.theme--catppuccin-latte h1 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h2 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h3 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h4 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h5 .docs-heading-anchor-permalink,html.theme--catppuccin-latte h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-latte h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-latte h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-latte h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-latte h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-latte .docs-dark-only{display:none !important}html.theme--catppuccin-latte pre{position:relative;overflow:hidden}html.theme--catppuccin-latte pre code,html.theme--catppuccin-latte pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-latte pre code:first-of-type,html.theme--catppuccin-latte pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-latte pre code:last-of-type,html.theme--catppuccin-latte pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-latte pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#4c4f69;cursor:pointer;text-align:center}html.theme--catppuccin-latte pre .copy-button:focus,html.theme--catppuccin-latte pre .copy-button:hover{opacity:1;background:rgba(76,79,105,0.1);color:#1e66f5}html.theme--catppuccin-latte pre .copy-button.success{color:#40a02b;opacity:1}html.theme--catppuccin-latte pre .copy-button.error{color:#d20f39;opacity:1}html.theme--catppuccin-latte pre:hover .copy-button{opacity:1}html.theme--catppuccin-latte .admonition{background-color:#e6e9ef;border-style:solid;border-width:2px;border-color:#5c5f77;border-radius:4px;font-size:1rem}html.theme--catppuccin-latte .admonition strong{color:currentColor}html.theme--catppuccin-latte .admonition.is-small,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-latte .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-latte .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-latte .admonition.is-default{background-color:#e6e9ef;border-color:#5c5f77}html.theme--catppuccin-latte .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#5c5f77}html.theme--catppuccin-latte .admonition.is-default>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-info{background-color:#e6e9ef;border-color:#179299}html.theme--catppuccin-latte .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#179299}html.theme--catppuccin-latte .admonition.is-info>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-success{background-color:#e6e9ef;border-color:#40a02b}html.theme--catppuccin-latte .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#40a02b}html.theme--catppuccin-latte .admonition.is-success>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-warning{background-color:#e6e9ef;border-color:#df8e1d}html.theme--catppuccin-latte .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#df8e1d}html.theme--catppuccin-latte .admonition.is-warning>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-danger{background-color:#e6e9ef;border-color:#d20f39}html.theme--catppuccin-latte .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#d20f39}html.theme--catppuccin-latte .admonition.is-danger>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-compat{background-color:#e6e9ef;border-color:#04a5e5}html.theme--catppuccin-latte .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#04a5e5}html.theme--catppuccin-latte .admonition.is-compat>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition.is-todo{background-color:#e6e9ef;border-color:#8839ef}html.theme--catppuccin-latte .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#8839ef}html.theme--catppuccin-latte .admonition.is-todo>.admonition-body{color:#4c4f69}html.theme--catppuccin-latte .admonition-header{color:#5c5f77;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-latte .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-latte details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-latte details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-latte details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-latte .admonition-body{color:#4c4f69;padding:0.5rem .75rem}html.theme--catppuccin-latte .admonition-body pre{background-color:#e6e9ef}html.theme--catppuccin-latte .admonition-body code{background-color:#e6e9ef}html.theme--catppuccin-latte .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #acb0be;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-latte .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#e6e9ef;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #acb0be;overflow:auto}html.theme--catppuccin-latte .docstring>header code{background-color:transparent}html.theme--catppuccin-latte .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-latte .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-latte .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-latte .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #acb0be}html.theme--catppuccin-latte .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-latte .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-latte .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-latte .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-latte .documenter-example-output{background-color:#eff1f5}html.theme--catppuccin-latte .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#e6e9ef;color:#4c4f69;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-latte .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-latte .outdated-warning-overlay a{color:#1e66f5}html.theme--catppuccin-latte .outdated-warning-overlay a:hover{color:#04a5e5}html.theme--catppuccin-latte .content pre{border:2px solid #acb0be;border-radius:4px}html.theme--catppuccin-latte .content code{font-weight:inherit}html.theme--catppuccin-latte .content a code{color:#1e66f5}html.theme--catppuccin-latte .content a:hover code{color:#04a5e5}html.theme--catppuccin-latte .content h1 code,html.theme--catppuccin-latte .content h2 code,html.theme--catppuccin-latte .content h3 code,html.theme--catppuccin-latte .content h4 code,html.theme--catppuccin-latte .content h5 code,html.theme--catppuccin-latte .content h6 code{color:#4c4f69}html.theme--catppuccin-latte .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-latte .content blockquote>ul:first-child,html.theme--catppuccin-latte .content blockquote>ol:first-child,html.theme--catppuccin-latte .content .admonition-body>ul:first-child,html.theme--catppuccin-latte .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-latte pre,html.theme--catppuccin-latte code{font-variant-ligatures:no-contextual}html.theme--catppuccin-latte .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-latte .breadcrumb a.is-disabled,html.theme--catppuccin-latte .breadcrumb a.is-disabled:hover{color:#41445a}html.theme--catppuccin-latte .hljs{background:initial !important}html.theme--catppuccin-latte .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-latte .katex-display,html.theme--catppuccin-latte mjx-container,html.theme--catppuccin-latte .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-latte html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-latte li.no-marker{list-style:none}html.theme--catppuccin-latte #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-latte #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main{width:100%}html.theme--catppuccin-latte #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-latte #documenter .docs-main>header,html.theme--catppuccin-latte #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar{background-color:#eff1f5;border-bottom:1px solid #acb0be;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-latte #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-latte #documenter .docs-main section.footnotes{border-top:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-latte #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-latte .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-latte #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #acb0be;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-latte #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-latte #documenter .docs-sidebar{display:flex;flex-direction:column;color:#4c4f69;background-color:#e6e9ef;border-right:1px solid #acb0be;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-latte #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-latte #documenter .docs-sidebar .docs-package-name a:hover{color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #acb0be;display:none;padding:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #acb0be;padding-bottom:1.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#4c4f69;background:#e6e9ef}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#4c4f69;background-color:#f2f4f7}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #acb0be;border-bottom:1px solid #acb0be;background-color:#dce0e8}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#dce0e8;color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#f2f4f7;color:#4c4f69}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #acb0be}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-latte #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#fff}html.theme--catppuccin-latte #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#fff}}@media screen and (max-width: 1055px){html.theme--catppuccin-latte #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#fff}html.theme--catppuccin-latte #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#fff}}html.theme--catppuccin-latte kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-latte .search-min-width-50{min-width:50%}html.theme--catppuccin-latte .search-min-height-100{min-height:100%}html.theme--catppuccin-latte .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-latte .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover,html.theme--catppuccin-latte .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-latte .search-result-link .property-search-result-badge,html.theme--catppuccin-latte .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-latte .property-search-result-badge,html.theme--catppuccin-latte .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-latte .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:hover .search-filter,html.theme--catppuccin-latte .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-latte .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-latte .search-filter:hover,html.theme--catppuccin-latte .search-filter:focus{color:#333}html.theme--catppuccin-latte .search-filter-selected{color:#ccd0da;background-color:#7287fd}html.theme--catppuccin-latte .search-filter-selected:hover,html.theme--catppuccin-latte .search-filter-selected:focus{color:#ccd0da}html.theme--catppuccin-latte .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-latte .search-divider{border-bottom:1px solid #acb0be}html.theme--catppuccin-latte .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-latte .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-latte #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-latte #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-latte .w-100{width:100%}html.theme--catppuccin-latte .gap-2{gap:0.5rem}html.theme--catppuccin-latte .gap-4{gap:1rem}html.theme--catppuccin-latte .gap-8{gap:2rem}html.theme--catppuccin-latte{background-color:#eff1f5;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-latte a{transition:all 200ms ease}html.theme--catppuccin-latte .label{color:#4c4f69}html.theme--catppuccin-latte .button,html.theme--catppuccin-latte .control.has-icons-left .icon,html.theme--catppuccin-latte .control.has-icons-right .icon,html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .pagination-ellipsis,html.theme--catppuccin-latte .pagination-link,html.theme--catppuccin-latte .pagination-next,html.theme--catppuccin-latte .pagination-previous,html.theme--catppuccin-latte .select,html.theme--catppuccin-latte .select select,html.theme--catppuccin-latte .textarea{height:2.5em;color:#4c4f69}html.theme--catppuccin-latte .input,html.theme--catppuccin-latte #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-latte .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#4c4f69}html.theme--catppuccin-latte .select:after,html.theme--catppuccin-latte .select select{border-width:1px}html.theme--catppuccin-latte .menu-list a{transition:all 300ms ease}html.theme--catppuccin-latte .modal-card-foot,html.theme--catppuccin-latte .modal-card-head{border-color:#acb0be}html.theme--catppuccin-latte .navbar{border-radius:.4em}html.theme--catppuccin-latte .navbar.is-transparent{background:none}html.theme--catppuccin-latte .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-latte .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1e66f5}@media screen and (max-width: 1055px){html.theme--catppuccin-latte .navbar .navbar-menu{background-color:#1e66f5;border-radius:0 0 .4em .4em}}html.theme--catppuccin-latte .docstring>section>a.docs-sourcelink:not(body){color:#ccd0da}html.theme--catppuccin-latte .tag.is-link:not(body),html.theme--catppuccin-latte .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-latte .content kbd.is-link:not(body){color:#ccd0da}html.theme--catppuccin-latte .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-latte .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-latte .ansi span.sgr3{font-style:italic}html.theme--catppuccin-latte .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-latte .ansi span.sgr7{color:#eff1f5;background-color:#4c4f69}html.theme--catppuccin-latte .ansi span.sgr8{color:transparent}html.theme--catppuccin-latte .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-latte .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-latte .ansi span.sgr30{color:#5c5f77}html.theme--catppuccin-latte .ansi span.sgr31{color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr32{color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr33{color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr34{color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr35{color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr36{color:#179299}html.theme--catppuccin-latte .ansi span.sgr37{color:#acb0be}html.theme--catppuccin-latte .ansi span.sgr40{background-color:#5c5f77}html.theme--catppuccin-latte .ansi span.sgr41{background-color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr42{background-color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr43{background-color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr44{background-color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr45{background-color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr46{background-color:#179299}html.theme--catppuccin-latte .ansi span.sgr47{background-color:#acb0be}html.theme--catppuccin-latte .ansi span.sgr90{color:#6c6f85}html.theme--catppuccin-latte .ansi span.sgr91{color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr92{color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr93{color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr94{color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr95{color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr96{color:#179299}html.theme--catppuccin-latte .ansi span.sgr97{color:#bcc0cc}html.theme--catppuccin-latte .ansi span.sgr100{background-color:#6c6f85}html.theme--catppuccin-latte .ansi span.sgr101{background-color:#d20f39}html.theme--catppuccin-latte .ansi span.sgr102{background-color:#40a02b}html.theme--catppuccin-latte .ansi span.sgr103{background-color:#df8e1d}html.theme--catppuccin-latte .ansi span.sgr104{background-color:#1e66f5}html.theme--catppuccin-latte .ansi span.sgr105{background-color:#ea76cb}html.theme--catppuccin-latte .ansi span.sgr106{background-color:#179299}html.theme--catppuccin-latte .ansi span.sgr107{background-color:#bcc0cc}html.theme--catppuccin-latte code.language-julia-repl>span.hljs-meta{color:#40a02b;font-weight:bolder}html.theme--catppuccin-latte code .hljs{color:#4c4f69;background:#eff1f5}html.theme--catppuccin-latte code .hljs-keyword{color:#8839ef}html.theme--catppuccin-latte code .hljs-built_in{color:#d20f39}html.theme--catppuccin-latte code .hljs-type{color:#df8e1d}html.theme--catppuccin-latte code .hljs-literal{color:#fe640b}html.theme--catppuccin-latte code .hljs-number{color:#fe640b}html.theme--catppuccin-latte code .hljs-operator{color:#179299}html.theme--catppuccin-latte code .hljs-punctuation{color:#5c5f77}html.theme--catppuccin-latte code .hljs-property{color:#179299}html.theme--catppuccin-latte code .hljs-regexp{color:#ea76cb}html.theme--catppuccin-latte code .hljs-string{color:#40a02b}html.theme--catppuccin-latte code .hljs-char.escape_{color:#40a02b}html.theme--catppuccin-latte code .hljs-subst{color:#6c6f85}html.theme--catppuccin-latte code .hljs-symbol{color:#dd7878}html.theme--catppuccin-latte code .hljs-variable{color:#8839ef}html.theme--catppuccin-latte code .hljs-variable.language_{color:#8839ef}html.theme--catppuccin-latte code .hljs-variable.constant_{color:#fe640b}html.theme--catppuccin-latte code .hljs-title{color:#1e66f5}html.theme--catppuccin-latte code .hljs-title.class_{color:#df8e1d}html.theme--catppuccin-latte code .hljs-title.function_{color:#1e66f5}html.theme--catppuccin-latte code .hljs-params{color:#4c4f69}html.theme--catppuccin-latte code .hljs-comment{color:#acb0be}html.theme--catppuccin-latte code .hljs-doctag{color:#d20f39}html.theme--catppuccin-latte code .hljs-meta{color:#fe640b}html.theme--catppuccin-latte code .hljs-section{color:#1e66f5}html.theme--catppuccin-latte code .hljs-tag{color:#6c6f85}html.theme--catppuccin-latte code .hljs-name{color:#8839ef}html.theme--catppuccin-latte code .hljs-attr{color:#1e66f5}html.theme--catppuccin-latte code .hljs-attribute{color:#40a02b}html.theme--catppuccin-latte code .hljs-bullet{color:#179299}html.theme--catppuccin-latte code .hljs-code{color:#40a02b}html.theme--catppuccin-latte code .hljs-emphasis{color:#d20f39;font-style:italic}html.theme--catppuccin-latte code .hljs-strong{color:#d20f39;font-weight:bold}html.theme--catppuccin-latte code .hljs-formula{color:#179299}html.theme--catppuccin-latte code .hljs-link{color:#209fb5;font-style:italic}html.theme--catppuccin-latte code .hljs-quote{color:#40a02b;font-style:italic}html.theme--catppuccin-latte code .hljs-selector-tag{color:#df8e1d}html.theme--catppuccin-latte code .hljs-selector-id{color:#1e66f5}html.theme--catppuccin-latte code .hljs-selector-class{color:#179299}html.theme--catppuccin-latte code .hljs-selector-attr{color:#8839ef}html.theme--catppuccin-latte code .hljs-selector-pseudo{color:#179299}html.theme--catppuccin-latte code .hljs-template-tag{color:#dd7878}html.theme--catppuccin-latte code .hljs-template-variable{color:#dd7878}html.theme--catppuccin-latte code .hljs-addition{color:#40a02b;background:rgba(166,227,161,0.15)}html.theme--catppuccin-latte code .hljs-deletion{color:#d20f39;background:rgba(243,139,168,0.15)}html.theme--catppuccin-latte .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover,html.theme--catppuccin-latte .search-result-link:focus{background-color:#ccd0da}html.theme--catppuccin-latte .search-result-link .property-search-result-badge,html.theme--catppuccin-latte .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-latte .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:hover .search-filter,html.theme--catppuccin-latte .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-latte .search-result-link:focus .search-filter{color:#ccd0da !important;background-color:#7287fd !important}html.theme--catppuccin-latte .search-result-title{color:#4c4f69}html.theme--catppuccin-latte .search-result-highlight{background-color:#d20f39;color:#e6e9ef}html.theme--catppuccin-latte .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-latte .w-100{width:100%}html.theme--catppuccin-latte .gap-2{gap:0.5rem}html.theme--catppuccin-latte .gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themes/catppuccin-macchiato.css b/previews/PR1200/assets/themes/catppuccin-macchiato.css new file mode 100644 index 0000000000..a9cf9c573f --- /dev/null +++ b/previews/PR1200/assets/themes/catppuccin-macchiato.css @@ -0,0 +1 @@ +html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato .file-name,html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-macchiato .pagination-previous:focus,html.theme--catppuccin-macchiato .pagination-next:focus,html.theme--catppuccin-macchiato .pagination-link:focus,html.theme--catppuccin-macchiato .pagination-ellipsis:focus,html.theme--catppuccin-macchiato .file-cta:focus,html.theme--catppuccin-macchiato .file-name:focus,html.theme--catppuccin-macchiato .select select:focus,html.theme--catppuccin-macchiato .textarea:focus,html.theme--catppuccin-macchiato .input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-macchiato .button:focus,html.theme--catppuccin-macchiato .is-focused.pagination-previous,html.theme--catppuccin-macchiato .is-focused.pagination-next,html.theme--catppuccin-macchiato .is-focused.pagination-link,html.theme--catppuccin-macchiato .is-focused.pagination-ellipsis,html.theme--catppuccin-macchiato .is-focused.file-cta,html.theme--catppuccin-macchiato .is-focused.file-name,html.theme--catppuccin-macchiato .select select.is-focused,html.theme--catppuccin-macchiato .is-focused.textarea,html.theme--catppuccin-macchiato .is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-focused.button,html.theme--catppuccin-macchiato .pagination-previous:active,html.theme--catppuccin-macchiato .pagination-next:active,html.theme--catppuccin-macchiato .pagination-link:active,html.theme--catppuccin-macchiato .pagination-ellipsis:active,html.theme--catppuccin-macchiato .file-cta:active,html.theme--catppuccin-macchiato .file-name:active,html.theme--catppuccin-macchiato .select select:active,html.theme--catppuccin-macchiato .textarea:active,html.theme--catppuccin-macchiato .input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-macchiato .button:active,html.theme--catppuccin-macchiato .is-active.pagination-previous,html.theme--catppuccin-macchiato .is-active.pagination-next,html.theme--catppuccin-macchiato .is-active.pagination-link,html.theme--catppuccin-macchiato .is-active.pagination-ellipsis,html.theme--catppuccin-macchiato .is-active.file-cta,html.theme--catppuccin-macchiato .is-active.file-name,html.theme--catppuccin-macchiato .select select.is-active,html.theme--catppuccin-macchiato .is-active.textarea,html.theme--catppuccin-macchiato .is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .is-active.button{outline:none}html.theme--catppuccin-macchiato .pagination-previous[disabled],html.theme--catppuccin-macchiato .pagination-next[disabled],html.theme--catppuccin-macchiato .pagination-link[disabled],html.theme--catppuccin-macchiato .pagination-ellipsis[disabled],html.theme--catppuccin-macchiato .file-cta[disabled],html.theme--catppuccin-macchiato .file-name[disabled],html.theme--catppuccin-macchiato .select select[disabled],html.theme--catppuccin-macchiato .textarea[disabled],html.theme--catppuccin-macchiato .input[disabled],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-macchiato .button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-macchiato .file-name,html.theme--catppuccin-macchiato fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-macchiato .select select,fieldset[disabled] html.theme--catppuccin-macchiato .textarea,fieldset[disabled] html.theme--catppuccin-macchiato .input,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato fieldset[disabled] .select select,html.theme--catppuccin-macchiato .select fieldset[disabled] select,html.theme--catppuccin-macchiato fieldset[disabled] .textarea,html.theme--catppuccin-macchiato fieldset[disabled] .input,html.theme--catppuccin-macchiato fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-macchiato .button,html.theme--catppuccin-macchiato fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-macchiato .tabs,html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .breadcrumb,html.theme--catppuccin-macchiato .file,html.theme--catppuccin-macchiato .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-macchiato .admonition:not(:last-child),html.theme--catppuccin-macchiato .tabs:not(:last-child),html.theme--catppuccin-macchiato .pagination:not(:last-child),html.theme--catppuccin-macchiato .message:not(:last-child),html.theme--catppuccin-macchiato .level:not(:last-child),html.theme--catppuccin-macchiato .breadcrumb:not(:last-child),html.theme--catppuccin-macchiato .block:not(:last-child),html.theme--catppuccin-macchiato .title:not(:last-child),html.theme--catppuccin-macchiato .subtitle:not(:last-child),html.theme--catppuccin-macchiato .table-container:not(:last-child),html.theme--catppuccin-macchiato .table:not(:last-child),html.theme--catppuccin-macchiato .progress:not(:last-child),html.theme--catppuccin-macchiato .notification:not(:last-child),html.theme--catppuccin-macchiato .content:not(:last-child),html.theme--catppuccin-macchiato .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .modal-close,html.theme--catppuccin-macchiato .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-macchiato .modal-close::before,html.theme--catppuccin-macchiato .delete::before,html.theme--catppuccin-macchiato .modal-close::after,html.theme--catppuccin-macchiato .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-macchiato .modal-close::before,html.theme--catppuccin-macchiato .delete::before{height:2px;width:50%}html.theme--catppuccin-macchiato .modal-close::after,html.theme--catppuccin-macchiato .delete::after{height:50%;width:2px}html.theme--catppuccin-macchiato .modal-close:hover,html.theme--catppuccin-macchiato .delete:hover,html.theme--catppuccin-macchiato .modal-close:focus,html.theme--catppuccin-macchiato .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-macchiato .modal-close:active,html.theme--catppuccin-macchiato .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-macchiato .is-small.modal-close,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-macchiato .is-small.delete,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-macchiato .is-medium.modal-close,html.theme--catppuccin-macchiato .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-macchiato .is-large.modal-close,html.theme--catppuccin-macchiato .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-macchiato .control.is-loading::after,html.theme--catppuccin-macchiato .select.is-loading::after,html.theme--catppuccin-macchiato .loader,html.theme--catppuccin-macchiato .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #8087a2;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-macchiato .hero-video,html.theme--catppuccin-macchiato .modal-background,html.theme--catppuccin-macchiato .modal,html.theme--catppuccin-macchiato .image.is-square img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-macchiato .image.is-square .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-macchiato .image.is-1by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-macchiato .image.is-1by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-macchiato .image.is-5by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-macchiato .image.is-4by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-macchiato .image.is-3by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-macchiato .image.is-5by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-16by9 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-macchiato .image.is-16by9 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-macchiato .image.is-2by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-macchiato .image.is-3by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-macchiato .image.is-4by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-macchiato .image.is-3by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-macchiato .image.is-2by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-macchiato .image.is-3by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-9by16 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-macchiato .image.is-9by16 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-macchiato .image.is-1by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-macchiato .image.is-1by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-macchiato .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363a4f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#212431 !important}.has-background-dark{background-color:#363a4f !important}.has-text-primary{color:#8aadf4 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#5b8cf0 !important}.has-background-primary{background-color:#8aadf4 !important}.has-text-primary-light{color:#ecf2fd !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bed1f9 !important}.has-background-primary-light{background-color:#ecf2fd !important}.has-text-primary-dark{color:#0e3b95 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#124dc4 !important}.has-background-primary-dark{background-color:#0e3b95 !important}.has-text-link{color:#8aadf4 !important}a.has-text-link:hover,a.has-text-link:focus{color:#5b8cf0 !important}.has-background-link{background-color:#8aadf4 !important}.has-text-link-light{color:#ecf2fd !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bed1f9 !important}.has-background-link-light{background-color:#ecf2fd !important}.has-text-link-dark{color:#0e3b95 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#124dc4 !important}.has-background-link-dark{background-color:#0e3b95 !important}.has-text-info{color:#8bd5ca !important}a.has-text-info:hover,a.has-text-info:focus{color:#66c7b9 !important}.has-background-info{background-color:#8bd5ca !important}.has-text-info-light{color:#f0faf8 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#cbece7 !important}.has-background-info-light{background-color:#f0faf8 !important}.has-text-info-dark{color:#276d62 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#359284 !important}.has-background-info-dark{background-color:#276d62 !important}.has-text-success{color:#a6da95 !important}a.has-text-success:hover,a.has-text-success:focus{color:#86cd6f !important}.has-background-success{background-color:#a6da95 !important}.has-text-success-light{color:#f2faf0 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#d3edca !important}.has-background-success-light{background-color:#f2faf0 !important}.has-text-success-dark{color:#386e26 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#4b9333 !important}.has-background-success-dark{background-color:#386e26 !important}.has-text-warning{color:#eed49f !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#e6c174 !important}.has-background-warning{background-color:#eed49f !important}.has-text-warning-light{color:#fcf7ee !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#f4e4c2 !important}.has-background-warning-light{background-color:#fcf7ee !important}.has-text-warning-dark{color:#7e5c16 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#a97b1e !important}.has-background-warning-dark{background-color:#7e5c16 !important}.has-text-danger{color:#ed8796 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#e65b6f !important}.has-background-danger{background-color:#ed8796 !important}.has-text-danger-light{color:#fcedef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f6c1c9 !important}.has-background-danger-light{background-color:#fcedef !important}.has-text-danger-dark{color:#971729 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c31d36 !important}.has-background-danger-dark{background-color:#971729 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363a4f !important}.has-background-grey-darker{background-color:#363a4f !important}.has-text-grey-dark{color:#494d64 !important}.has-background-grey-dark{background-color:#494d64 !important}.has-text-grey{color:#5b6078 !important}.has-background-grey{background-color:#5b6078 !important}.has-text-grey-light{color:#6e738d !important}.has-background-grey-light{background-color:#6e738d !important}.has-text-grey-lighter{color:#8087a2 !important}.has-background-grey-lighter{background-color:#8087a2 !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-macchiato html{background-color:#24273a;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-macchiato article,html.theme--catppuccin-macchiato aside,html.theme--catppuccin-macchiato figure,html.theme--catppuccin-macchiato footer,html.theme--catppuccin-macchiato header,html.theme--catppuccin-macchiato hgroup,html.theme--catppuccin-macchiato section{display:block}html.theme--catppuccin-macchiato body,html.theme--catppuccin-macchiato button,html.theme--catppuccin-macchiato input,html.theme--catppuccin-macchiato optgroup,html.theme--catppuccin-macchiato select,html.theme--catppuccin-macchiato textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-macchiato code,html.theme--catppuccin-macchiato pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-macchiato body{color:#cad3f5;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-macchiato a{color:#8aadf4;cursor:pointer;text-decoration:none}html.theme--catppuccin-macchiato a strong{color:currentColor}html.theme--catppuccin-macchiato a:hover{color:#91d7e3}html.theme--catppuccin-macchiato code{background-color:#1e2030;color:#cad3f5;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-macchiato hr{background-color:#1e2030;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-macchiato img{height:auto;max-width:100%}html.theme--catppuccin-macchiato input[type="checkbox"],html.theme--catppuccin-macchiato input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-macchiato small{font-size:.875em}html.theme--catppuccin-macchiato span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-macchiato strong{color:#b5c1f1;font-weight:700}html.theme--catppuccin-macchiato fieldset{border:none}html.theme--catppuccin-macchiato pre{-webkit-overflow-scrolling:touch;background-color:#1e2030;color:#cad3f5;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-macchiato pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-macchiato table td,html.theme--catppuccin-macchiato table th{vertical-align:top}html.theme--catppuccin-macchiato table td:not([align]),html.theme--catppuccin-macchiato table th:not([align]){text-align:inherit}html.theme--catppuccin-macchiato table th{color:#b5c1f1}html.theme--catppuccin-macchiato .box{background-color:#494d64;border-radius:8px;box-shadow:none;color:#cad3f5;display:block;padding:1.25rem}html.theme--catppuccin-macchiato a.box:hover,html.theme--catppuccin-macchiato a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #8aadf4}html.theme--catppuccin-macchiato a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #8aadf4}html.theme--catppuccin-macchiato .button{background-color:#1e2030;border-color:#3b3f5f;border-width:1px;color:#8aadf4;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-macchiato .button strong{color:inherit}html.theme--catppuccin-macchiato .button .icon,html.theme--catppuccin-macchiato .button .icon.is-small,html.theme--catppuccin-macchiato .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-macchiato .button .icon.is-medium,html.theme--catppuccin-macchiato .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-macchiato .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-macchiato .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-macchiato .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-macchiato .button:hover,html.theme--catppuccin-macchiato .button.is-hovered{border-color:#6e738d;color:#b5c1f1}html.theme--catppuccin-macchiato .button:focus,html.theme--catppuccin-macchiato .button.is-focused{border-color:#6e738d;color:#739df2}html.theme--catppuccin-macchiato .button:focus:not(:active),html.theme--catppuccin-macchiato .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button:active,html.theme--catppuccin-macchiato .button.is-active{border-color:#494d64;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text{background-color:transparent;border-color:transparent;color:#cad3f5;text-decoration:underline}html.theme--catppuccin-macchiato .button.is-text:hover,html.theme--catppuccin-macchiato .button.is-text.is-hovered,html.theme--catppuccin-macchiato .button.is-text:focus,html.theme--catppuccin-macchiato .button.is-text.is-focused{background-color:#1e2030;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text:active,html.theme--catppuccin-macchiato .button.is-text.is-active{background-color:#141620;color:#b5c1f1}html.theme--catppuccin-macchiato .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-macchiato .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#8aadf4;text-decoration:none}html.theme--catppuccin-macchiato .button.is-ghost:hover,html.theme--catppuccin-macchiato .button.is-ghost.is-hovered{color:#8aadf4;text-decoration:underline}html.theme--catppuccin-macchiato .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:hover,html.theme--catppuccin-macchiato .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:focus,html.theme--catppuccin-macchiato .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white:focus:not(:active),html.theme--catppuccin-macchiato .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .button.is-white:active,html.theme--catppuccin-macchiato .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-macchiato .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-macchiato .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-white.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:hover,html.theme--catppuccin-macchiato .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:focus,html.theme--catppuccin-macchiato .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black:focus:not(:active),html.theme--catppuccin-macchiato .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .button.is-black:active,html.theme--catppuccin-macchiato .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-macchiato .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-black.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:hover,html.theme--catppuccin-macchiato .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:focus,html.theme--catppuccin-macchiato .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light:focus:not(:active),html.theme--catppuccin-macchiato .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .button.is-light:active,html.theme--catppuccin-macchiato .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-macchiato .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-light.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-dark,html.theme--catppuccin-macchiato .content kbd.button{background-color:#363a4f;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:hover,html.theme--catppuccin-macchiato .content kbd.button:hover,html.theme--catppuccin-macchiato .button.is-dark.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-hovered{background-color:#313447;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:focus,html.theme--catppuccin-macchiato .content kbd.button:focus,html.theme--catppuccin-macchiato .button.is-dark.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark:focus:not(:active),html.theme--catppuccin-macchiato .content kbd.button:focus:not(:active),html.theme--catppuccin-macchiato .button.is-dark.is-focused:not(:active),html.theme--catppuccin-macchiato .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .button.is-dark:active,html.theme--catppuccin-macchiato .content kbd.button:active,html.theme--catppuccin-macchiato .button.is-dark.is-active,html.theme--catppuccin-macchiato .content kbd.button.is-active{background-color:#2c2f40;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-dark[disabled],html.theme--catppuccin-macchiato .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button{background-color:#363a4f;border-color:#363a4f;box-shadow:none}html.theme--catppuccin-macchiato .button.is-dark.is-inverted,html.theme--catppuccin-macchiato .content kbd.button.is-inverted{background-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted:hover,html.theme--catppuccin-macchiato .content kbd.button.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-dark.is-inverted[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-loading::after,html.theme--catppuccin-macchiato .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined,html.theme--catppuccin-macchiato .content kbd.button.is-outlined{background-color:transparent;border-color:#363a4f;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-outlined:hover,html.theme--catppuccin-macchiato .content kbd.button.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-dark.is-outlined:focus,html.theme--catppuccin-macchiato .content kbd.button.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-focused{background-color:#363a4f;border-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363a4f #363a4f !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-dark.is-outlined[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-outlined{background-color:transparent;border-color:#363a4f;box-shadow:none;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363a4f #363a4f !important}html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary:focus:not(:active),html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-macchiato .button.is-primary.is-focused:not(:active),html.theme--catppuccin-macchiato .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button.is-primary:active,html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-macchiato .button.is-primary.is-active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-active.docs-sourcelink{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-primary[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.docs-sourcelink{background-color:#8aadf4;border-color:#8aadf4;box-shadow:none}html.theme--catppuccin-macchiato .button.is-primary.is-inverted,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-primary.is-inverted[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-loading::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-outlined:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-macchiato .button.is-primary.is-outlined:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-macchiato .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-primary.is-outlined[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#8aadf4;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-macchiato .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-primary.is-light,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-primary.is-light:hover,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-macchiato .button.is-primary.is-light.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e1eafc;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-primary.is-light:active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-macchiato .button.is-primary.is-light.is-active,html.theme--catppuccin-macchiato .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d5e2fb;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:hover,html.theme--catppuccin-macchiato .button.is-link.is-hovered{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:focus,html.theme--catppuccin-macchiato .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link:focus:not(:active),html.theme--catppuccin-macchiato .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .button.is-link:active,html.theme--catppuccin-macchiato .button.is-link.is-active{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link{background-color:#8aadf4;border-color:#8aadf4;box-shadow:none}html.theme--catppuccin-macchiato .button.is-link.is-inverted{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined{background-color:transparent;border-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-link.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-focused{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-outlined{background-color:transparent;border-color:#8aadf4;box-shadow:none;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8aadf4 #8aadf4 !important}html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-link.is-light{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link.is-light:hover,html.theme--catppuccin-macchiato .button.is-link.is-light.is-hovered{background-color:#e1eafc;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-link.is-light:active,html.theme--catppuccin-macchiato .button.is-link.is-light.is-active{background-color:#d5e2fb;border-color:transparent;color:#0e3b95}html.theme--catppuccin-macchiato .button.is-info{background-color:#8bd5ca;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:hover,html.theme--catppuccin-macchiato .button.is-info.is-hovered{background-color:#82d2c6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:focus,html.theme--catppuccin-macchiato .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info:focus:not(:active),html.theme--catppuccin-macchiato .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .button.is-info:active,html.theme--catppuccin-macchiato .button.is-info.is-active{background-color:#78cec1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info{background-color:#8bd5ca;border-color:#8bd5ca;box-shadow:none}html.theme--catppuccin-macchiato .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined{background-color:transparent;border-color:#8bd5ca;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-info.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-focused{background-color:#8bd5ca;border-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #8bd5ca #8bd5ca !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-outlined{background-color:transparent;border-color:#8bd5ca;box-shadow:none;color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #8bd5ca #8bd5ca !important}html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-info.is-light{background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .button.is-info.is-light:hover,html.theme--catppuccin-macchiato .button.is-info.is-light.is-hovered{background-color:#e7f6f4;border-color:transparent;color:#276d62}html.theme--catppuccin-macchiato .button.is-info.is-light:active,html.theme--catppuccin-macchiato .button.is-info.is-light.is-active{background-color:#ddf3f0;border-color:transparent;color:#276d62}html.theme--catppuccin-macchiato .button.is-success{background-color:#a6da95;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:hover,html.theme--catppuccin-macchiato .button.is-success.is-hovered{background-color:#9ed78c;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:focus,html.theme--catppuccin-macchiato .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success:focus:not(:active),html.theme--catppuccin-macchiato .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .button.is-success:active,html.theme--catppuccin-macchiato .button.is-success.is-active{background-color:#96d382;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success{background-color:#a6da95;border-color:#a6da95;box-shadow:none}html.theme--catppuccin-macchiato .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined{background-color:transparent;border-color:#a6da95;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-success.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-focused{background-color:#a6da95;border-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6da95 #a6da95 !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-outlined{background-color:transparent;border-color:#a6da95;box-shadow:none;color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6da95 #a6da95 !important}html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-success.is-light{background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .button.is-success.is-light:hover,html.theme--catppuccin-macchiato .button.is-success.is-light.is-hovered{background-color:#eaf6e6;border-color:transparent;color:#386e26}html.theme--catppuccin-macchiato .button.is-success.is-light:active,html.theme--catppuccin-macchiato .button.is-success.is-light.is-active{background-color:#e2f3dd;border-color:transparent;color:#386e26}html.theme--catppuccin-macchiato .button.is-warning{background-color:#eed49f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:hover,html.theme--catppuccin-macchiato .button.is-warning.is-hovered{background-color:#eccf94;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:focus,html.theme--catppuccin-macchiato .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning:focus:not(:active),html.theme--catppuccin-macchiato .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .button.is-warning:active,html.theme--catppuccin-macchiato .button.is-warning.is-active{background-color:#eaca89;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning{background-color:#eed49f;border-color:#eed49f;box-shadow:none}html.theme--catppuccin-macchiato .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined{background-color:transparent;border-color:#eed49f;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-warning.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-focused{background-color:#eed49f;border-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #eed49f #eed49f !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-macchiato .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-outlined{background-color:transparent;border-color:#eed49f;box-shadow:none;color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #eed49f #eed49f !important}html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .button.is-warning.is-light{background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-warning.is-light:hover,html.theme--catppuccin-macchiato .button.is-warning.is-light.is-hovered{background-color:#faf2e3;border-color:transparent;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-warning.is-light:active,html.theme--catppuccin-macchiato .button.is-warning.is-light.is-active{background-color:#f8eed8;border-color:transparent;color:#7e5c16}html.theme--catppuccin-macchiato .button.is-danger{background-color:#ed8796;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:hover,html.theme--catppuccin-macchiato .button.is-danger.is-hovered{background-color:#eb7c8c;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:focus,html.theme--catppuccin-macchiato .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger:focus:not(:active),html.theme--catppuccin-macchiato .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .button.is-danger:active,html.theme--catppuccin-macchiato .button.is-danger.is-active{background-color:#ea7183;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger{background-color:#ed8796;border-color:#ed8796;box-shadow:none}html.theme--catppuccin-macchiato .button.is-danger.is-inverted{background-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted:hover,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-macchiato .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined{background-color:transparent;border-color:#ed8796;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-danger.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-focused{background-color:#ed8796;border-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #ed8796 #ed8796 !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-macchiato .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-outlined{background-color:transparent;border-color:#ed8796;box-shadow:none;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ed8796 #ed8796 !important}html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-macchiato .button.is-danger.is-light{background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .button.is-danger.is-light:hover,html.theme--catppuccin-macchiato .button.is-danger.is-light.is-hovered{background-color:#fbe2e6;border-color:transparent;color:#971729}html.theme--catppuccin-macchiato .button.is-danger.is-light:active,html.theme--catppuccin-macchiato .button.is-danger.is-light.is-active{background-color:#f9d7dc;border-color:transparent;color:#971729}html.theme--catppuccin-macchiato .button.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-small:not(.is-rounded),html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-macchiato .button.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .button.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .button.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .button[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .button{background-color:#6e738d;border-color:#5b6078;box-shadow:none;opacity:.5}html.theme--catppuccin-macchiato .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-macchiato .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-macchiato .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-macchiato .button.is-static{background-color:#1e2030;border-color:#5b6078;color:#8087a2;box-shadow:none;pointer-events:none}html.theme--catppuccin-macchiato .button.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-macchiato .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-macchiato .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-macchiato .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-macchiato .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-macchiato .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-macchiato .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-macchiato .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-macchiato .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-macchiato .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-macchiato .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-macchiato .buttons.has-addons .button:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-macchiato .buttons.has-addons .button:focus,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-focused,html.theme--catppuccin-macchiato .buttons.has-addons .button:active,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-active,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-macchiato .buttons.has-addons .button:focus:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button:active:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-macchiato .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-macchiato .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .buttons.is-centered{justify-content:center}html.theme--catppuccin-macchiato .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-macchiato .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .button.is-responsive.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-macchiato .button.is-responsive,html.theme--catppuccin-macchiato .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-macchiato .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .button.is-responsive.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-macchiato .button.is-responsive,html.theme--catppuccin-macchiato .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-macchiato .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-macchiato .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-macchiato .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-macchiato .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-macchiato .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-macchiato .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-macchiato .content li+li{margin-top:0.25em}html.theme--catppuccin-macchiato .content p:not(:last-child),html.theme--catppuccin-macchiato .content dl:not(:last-child),html.theme--catppuccin-macchiato .content ol:not(:last-child),html.theme--catppuccin-macchiato .content ul:not(:last-child),html.theme--catppuccin-macchiato .content blockquote:not(:last-child),html.theme--catppuccin-macchiato .content pre:not(:last-child),html.theme--catppuccin-macchiato .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-macchiato .content h1,html.theme--catppuccin-macchiato .content h2,html.theme--catppuccin-macchiato .content h3,html.theme--catppuccin-macchiato .content h4,html.theme--catppuccin-macchiato .content h5,html.theme--catppuccin-macchiato .content h6{color:#cad3f5;font-weight:600;line-height:1.125}html.theme--catppuccin-macchiato .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-macchiato .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-macchiato .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-macchiato .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-macchiato .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-macchiato .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-macchiato .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-macchiato .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-macchiato .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-macchiato .content blockquote{background-color:#1e2030;border-left:5px solid #5b6078;padding:1.25em 1.5em}html.theme--catppuccin-macchiato .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-macchiato .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-macchiato .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-macchiato .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-macchiato .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-macchiato .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-macchiato .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-macchiato .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-macchiato .content ul ul ul{list-style-type:square}html.theme--catppuccin-macchiato .content dd{margin-left:2em}html.theme--catppuccin-macchiato .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-macchiato .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-macchiato .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-macchiato .content figure img{display:inline-block}html.theme--catppuccin-macchiato .content figure figcaption{font-style:italic}html.theme--catppuccin-macchiato .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-macchiato .content sup,html.theme--catppuccin-macchiato .content sub{font-size:75%}html.theme--catppuccin-macchiato .content table{width:100%}html.theme--catppuccin-macchiato .content table td,html.theme--catppuccin-macchiato .content table th{border:1px solid #5b6078;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-macchiato .content table th{color:#b5c1f1}html.theme--catppuccin-macchiato .content table th:not([align]){text-align:inherit}html.theme--catppuccin-macchiato .content table thead td,html.theme--catppuccin-macchiato .content table thead th{border-width:0 0 2px;color:#b5c1f1}html.theme--catppuccin-macchiato .content table tfoot td,html.theme--catppuccin-macchiato .content table tfoot th{border-width:2px 0 0;color:#b5c1f1}html.theme--catppuccin-macchiato .content table tbody tr:last-child td,html.theme--catppuccin-macchiato .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-macchiato .content .tabs li+li{margin-top:0}html.theme--catppuccin-macchiato .content.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-macchiato .content.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .content.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .content.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-macchiato .icon.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-macchiato .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-macchiato .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-macchiato .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-macchiato .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-macchiato .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-macchiato div.icon-text{display:flex}html.theme--catppuccin-macchiato .image,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-macchiato .image img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-macchiato .image img.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-macchiato .image.is-fullwidth,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .image.is-square img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-macchiato .image.is-square .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-macchiato .image.is-1by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-macchiato .image.is-1by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-macchiato .image.is-5by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-macchiato .image.is-4by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-macchiato .image.is-3by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-5by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-macchiato .image.is-5by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-16by9 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-macchiato .image.is-16by9 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-macchiato .image.is-2by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by1 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-macchiato .image.is-3by1 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-macchiato .image.is-4by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-macchiato .image.is-4by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by4 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-macchiato .image.is-3by4 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-macchiato .image.is-2by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-macchiato .image.is-2by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-macchiato .image.is-3by5 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-macchiato .image.is-3by5 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-macchiato .image.is-9by16 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-macchiato .image.is-9by16 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by2 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-macchiato .image.is-1by2 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-macchiato .image.is-1by3 img,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-macchiato .image.is-1by3 .has-ratio,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-macchiato .image.is-square,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-macchiato .image.is-1by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-macchiato .image.is-5by4,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-macchiato .image.is-4by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-macchiato .image.is-3by2,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-macchiato .image.is-5by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-macchiato .image.is-16by9,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-macchiato .image.is-2by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-macchiato .image.is-3by1,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-macchiato .image.is-4by5,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-macchiato .image.is-3by4,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-macchiato .image.is-2by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-macchiato .image.is-3by5,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-macchiato .image.is-9by16,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-macchiato .image.is-1by2,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-macchiato .image.is-1by3,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-macchiato .image.is-16x16,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-macchiato .image.is-24x24,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-macchiato .image.is-32x32,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-macchiato .image.is-48x48,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-macchiato .image.is-64x64,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-macchiato .image.is-96x96,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-macchiato .image.is-128x128,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-macchiato .notification{background-color:#1e2030;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-macchiato .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-macchiato .notification strong{color:currentColor}html.theme--catppuccin-macchiato .notification code,html.theme--catppuccin-macchiato .notification pre{background:#fff}html.theme--catppuccin-macchiato .notification pre code{background:transparent}html.theme--catppuccin-macchiato .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-macchiato .notification .title,html.theme--catppuccin-macchiato .notification .subtitle,html.theme--catppuccin-macchiato .notification .content{color:currentColor}html.theme--catppuccin-macchiato .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-dark,html.theme--catppuccin-macchiato .content kbd.notification{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .notification.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.notification.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .notification.is-primary.is-light,html.theme--catppuccin-macchiato .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .notification.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .notification.is-link.is-light{background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .notification.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-info.is-light{background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .notification.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-success.is-light{background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .notification.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .notification.is-warning.is-light{background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .notification.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .notification.is-danger.is-light{background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-macchiato .progress::-webkit-progress-bar{background-color:#494d64}html.theme--catppuccin-macchiato .progress::-webkit-progress-value{background-color:#8087a2}html.theme--catppuccin-macchiato .progress::-moz-progress-bar{background-color:#8087a2}html.theme--catppuccin-macchiato .progress::-ms-fill{background-color:#8087a2;border:none}html.theme--catppuccin-macchiato .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-macchiato .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-macchiato .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-macchiato .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-macchiato .content kbd.progress::-webkit-progress-value{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-macchiato .content kbd.progress::-moz-progress-bar{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark::-ms-fill,html.theme--catppuccin-macchiato .content kbd.progress::-ms-fill{background-color:#363a4f}html.theme--catppuccin-macchiato .progress.is-dark:indeterminate,html.theme--catppuccin-macchiato .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363a4f 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary::-ms-fill,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-primary:indeterminate,html.theme--catppuccin-macchiato .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #8aadf4 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-link::-webkit-progress-value{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link::-moz-progress-bar{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link::-ms-fill{background-color:#8aadf4}html.theme--catppuccin-macchiato .progress.is-link:indeterminate{background-image:linear-gradient(to right, #8aadf4 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-info::-webkit-progress-value{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info::-moz-progress-bar{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info::-ms-fill{background-color:#8bd5ca}html.theme--catppuccin-macchiato .progress.is-info:indeterminate{background-image:linear-gradient(to right, #8bd5ca 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-success::-webkit-progress-value{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success::-moz-progress-bar{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success::-ms-fill{background-color:#a6da95}html.theme--catppuccin-macchiato .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6da95 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-warning::-webkit-progress-value{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning::-moz-progress-bar{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning::-ms-fill{background-color:#eed49f}html.theme--catppuccin-macchiato .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #eed49f 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress.is-danger::-webkit-progress-value{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger::-moz-progress-bar{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger::-ms-fill{background-color:#ed8796}html.theme--catppuccin-macchiato .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #ed8796 30%, #494d64 30%)}html.theme--catppuccin-macchiato .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#494d64;background-image:linear-gradient(to right, #cad3f5 30%, #494d64 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-macchiato .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-macchiato .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-macchiato .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-macchiato .progress.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-macchiato .progress.is-medium{height:1.25rem}html.theme--catppuccin-macchiato .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-macchiato .table{background-color:#494d64;color:#cad3f5}html.theme--catppuccin-macchiato .table td,html.theme--catppuccin-macchiato .table th{border:1px solid #5b6078;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-macchiato .table td.is-white,html.theme--catppuccin-macchiato .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .table td.is-black,html.theme--catppuccin-macchiato .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .table td.is-light,html.theme--catppuccin-macchiato .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-dark,html.theme--catppuccin-macchiato .table th.is-dark{background-color:#363a4f;border-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .table td.is-primary,html.theme--catppuccin-macchiato .table th.is-primary{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-link,html.theme--catppuccin-macchiato .table th.is-link{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-info,html.theme--catppuccin-macchiato .table th.is-info{background-color:#8bd5ca;border-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-success,html.theme--catppuccin-macchiato .table th.is-success{background-color:#a6da95;border-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-warning,html.theme--catppuccin-macchiato .table th.is-warning{background-color:#eed49f;border-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .table td.is-danger,html.theme--catppuccin-macchiato .table th.is-danger{background-color:#ed8796;border-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .table td.is-narrow,html.theme--catppuccin-macchiato .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-macchiato .table td.is-selected,html.theme--catppuccin-macchiato .table th.is-selected{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table td.is-selected a,html.theme--catppuccin-macchiato .table td.is-selected strong,html.theme--catppuccin-macchiato .table th.is-selected a,html.theme--catppuccin-macchiato .table th.is-selected strong{color:currentColor}html.theme--catppuccin-macchiato .table td.is-vcentered,html.theme--catppuccin-macchiato .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-macchiato .table th{color:#b5c1f1}html.theme--catppuccin-macchiato .table th:not([align]){text-align:left}html.theme--catppuccin-macchiato .table tr.is-selected{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .table tr.is-selected a,html.theme--catppuccin-macchiato .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-macchiato .table tr.is-selected td,html.theme--catppuccin-macchiato .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-macchiato .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table thead td,html.theme--catppuccin-macchiato .table thead th{border-width:0 0 2px;color:#b5c1f1}html.theme--catppuccin-macchiato .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table tfoot td,html.theme--catppuccin-macchiato .table tfoot th{border-width:2px 0 0;color:#b5c1f1}html.theme--catppuccin-macchiato .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .table tbody tr:last-child td,html.theme--catppuccin-macchiato .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-macchiato .table.is-bordered td,html.theme--catppuccin-macchiato .table.is-bordered th{border-width:1px}html.theme--catppuccin-macchiato .table.is-bordered tr:last-child td,html.theme--catppuccin-macchiato .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-macchiato .table.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#363a4f}html.theme--catppuccin-macchiato .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#363a4f}html.theme--catppuccin-macchiato .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#3a3e55}html.theme--catppuccin-macchiato .table.is-narrow td,html.theme--catppuccin-macchiato .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-macchiato .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#363a4f}html.theme--catppuccin-macchiato .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-macchiato .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .tags .tag,html.theme--catppuccin-macchiato .tags .content kbd,html.theme--catppuccin-macchiato .content .tags kbd,html.theme--catppuccin-macchiato .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-macchiato .tags .tag:not(:last-child),html.theme--catppuccin-macchiato .tags .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags kbd:not(:last-child),html.theme--catppuccin-macchiato .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-macchiato .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-macchiato .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-macchiato .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-macchiato .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-macchiato .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-macchiato .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-macchiato .tags.is-centered{justify-content:center}html.theme--catppuccin-macchiato .tags.is-centered .tag,html.theme--catppuccin-macchiato .tags.is-centered .content kbd,html.theme--catppuccin-macchiato .content .tags.is-centered kbd,html.theme--catppuccin-macchiato .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-macchiato .tags.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .tags.is-right .tag:not(:first-child),html.theme--catppuccin-macchiato .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-macchiato .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-macchiato .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-macchiato .tags.is-right .tag:not(:last-child),html.theme--catppuccin-macchiato .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-macchiato .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-macchiato .tags.has-addons .tag,html.theme--catppuccin-macchiato .tags.has-addons .content kbd,html.theme--catppuccin-macchiato .content .tags.has-addons kbd,html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-macchiato .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-macchiato .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-macchiato .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-macchiato .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-macchiato .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-macchiato .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-macchiato .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-macchiato .tag:not(body),html.theme--catppuccin-macchiato .content kbd:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#1e2030;border-radius:.4em;color:#cad3f5;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-macchiato .tag:not(body) .delete,html.theme--catppuccin-macchiato .content kbd:not(body) .delete,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-macchiato .tag.is-white:not(body),html.theme--catppuccin-macchiato .content kbd.is-white:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .tag.is-black:not(body),html.theme--catppuccin-macchiato .content kbd.is-black:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .tag.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-dark:not(body),html.theme--catppuccin-macchiato .content kbd:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-macchiato .content .docstring>section>kbd:not(body){background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .tag.is-primary:not(body),html.theme--catppuccin-macchiato .content kbd.is-primary:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .tag.is-primary.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .tag.is-link:not(body),html.theme--catppuccin-macchiato .content kbd.is-link:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .tag.is-link.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-link.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ecf2fd;color:#0e3b95}html.theme--catppuccin-macchiato .tag.is-info:not(body),html.theme--catppuccin-macchiato .content kbd.is-info:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-info.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-info.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#f0faf8;color:#276d62}html.theme--catppuccin-macchiato .tag.is-success:not(body),html.theme--catppuccin-macchiato .content kbd.is-success:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-success.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-success.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f2faf0;color:#386e26}html.theme--catppuccin-macchiato .tag.is-warning:not(body),html.theme--catppuccin-macchiato .content kbd.is-warning:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .tag.is-warning.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fcf7ee;color:#7e5c16}html.theme--catppuccin-macchiato .tag.is-danger:not(body),html.theme--catppuccin-macchiato .content kbd.is-danger:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .tag.is-danger.is-light:not(body),html.theme--catppuccin-macchiato .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fcedef;color:#971729}html.theme--catppuccin-macchiato .tag.is-normal:not(body),html.theme--catppuccin-macchiato .content kbd.is-normal:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-macchiato .tag.is-medium:not(body),html.theme--catppuccin-macchiato .content kbd.is-medium:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-macchiato .tag.is-large:not(body),html.theme--catppuccin-macchiato .content kbd.is-large:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-macchiato .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-macchiato .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-macchiato .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-macchiato .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-macchiato .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-macchiato .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-macchiato .tag.is-delete:not(body),html.theme--catppuccin-macchiato .content kbd.is-delete:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::before,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::before,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-macchiato .tag.is-delete:not(body)::after,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::after,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::before,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::before,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-macchiato .tag.is-delete:not(body)::after,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body)::after,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-macchiato .tag.is-delete:not(body):hover,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):hover,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-macchiato .tag.is-delete:not(body):focus,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):focus,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#141620}html.theme--catppuccin-macchiato .tag.is-delete:not(body):active,html.theme--catppuccin-macchiato .content kbd.is-delete:not(body):active,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#0a0b11}html.theme--catppuccin-macchiato .tag.is-rounded:not(body),html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-macchiato .content kbd.is-rounded:not(body),html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-macchiato a.tag:hover,html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-macchiato .title,html.theme--catppuccin-macchiato .subtitle{word-break:break-word}html.theme--catppuccin-macchiato .title em,html.theme--catppuccin-macchiato .title span,html.theme--catppuccin-macchiato .subtitle em,html.theme--catppuccin-macchiato .subtitle span{font-weight:inherit}html.theme--catppuccin-macchiato .title sub,html.theme--catppuccin-macchiato .subtitle sub{font-size:.75em}html.theme--catppuccin-macchiato .title sup,html.theme--catppuccin-macchiato .subtitle sup{font-size:.75em}html.theme--catppuccin-macchiato .title .tag,html.theme--catppuccin-macchiato .title .content kbd,html.theme--catppuccin-macchiato .content .title kbd,html.theme--catppuccin-macchiato .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-macchiato .subtitle .tag,html.theme--catppuccin-macchiato .subtitle .content kbd,html.theme--catppuccin-macchiato .content .subtitle kbd,html.theme--catppuccin-macchiato .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-macchiato .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-macchiato .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-macchiato .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-macchiato .title.is-1{font-size:3rem}html.theme--catppuccin-macchiato .title.is-2{font-size:2.5rem}html.theme--catppuccin-macchiato .title.is-3{font-size:2rem}html.theme--catppuccin-macchiato .title.is-4{font-size:1.5rem}html.theme--catppuccin-macchiato .title.is-5{font-size:1.25rem}html.theme--catppuccin-macchiato .title.is-6{font-size:1rem}html.theme--catppuccin-macchiato .title.is-7{font-size:.75rem}html.theme--catppuccin-macchiato .subtitle{color:#6e738d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-macchiato .subtitle strong{color:#6e738d;font-weight:600}html.theme--catppuccin-macchiato .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-macchiato .subtitle.is-1{font-size:3rem}html.theme--catppuccin-macchiato .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-macchiato .subtitle.is-3{font-size:2rem}html.theme--catppuccin-macchiato .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-macchiato .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-macchiato .subtitle.is-6{font-size:1rem}html.theme--catppuccin-macchiato .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-macchiato .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-macchiato .number{align-items:center;background-color:#1e2030;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{background-color:#24273a;border-color:#5b6078;border-radius:.4em;color:#8087a2}html.theme--catppuccin-macchiato .select select::-moz-placeholder,html.theme--catppuccin-macchiato .textarea::-moz-placeholder,html.theme--catppuccin-macchiato .input::-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select::-webkit-input-placeholder,html.theme--catppuccin-macchiato .textarea::-webkit-input-placeholder,html.theme--catppuccin-macchiato .input::-webkit-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:-moz-placeholder,html.theme--catppuccin-macchiato .textarea:-moz-placeholder,html.theme--catppuccin-macchiato .input:-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:-ms-input-placeholder,html.theme--catppuccin-macchiato .textarea:-ms-input-placeholder,html.theme--catppuccin-macchiato .input:-ms-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-macchiato .select select:hover,html.theme--catppuccin-macchiato .textarea:hover,html.theme--catppuccin-macchiato .input:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-macchiato .select select.is-hovered,html.theme--catppuccin-macchiato .is-hovered.textarea,html.theme--catppuccin-macchiato .is-hovered.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#6e738d}html.theme--catppuccin-macchiato .select select:focus,html.theme--catppuccin-macchiato .textarea:focus,html.theme--catppuccin-macchiato .input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-macchiato .select select.is-focused,html.theme--catppuccin-macchiato .is-focused.textarea,html.theme--catppuccin-macchiato .is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .select select:active,html.theme--catppuccin-macchiato .textarea:active,html.theme--catppuccin-macchiato .input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-macchiato .select select.is-active,html.theme--catppuccin-macchiato .is-active.textarea,html.theme--catppuccin-macchiato .is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#8aadf4;box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select select[disabled],html.theme--catppuccin-macchiato .textarea[disabled],html.theme--catppuccin-macchiato .input[disabled],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .select select,fieldset[disabled] html.theme--catppuccin-macchiato .textarea,fieldset[disabled] html.theme--catppuccin-macchiato .input,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{background-color:#6e738d;border-color:#1e2030;box-shadow:none;color:#f5f7fd}html.theme--catppuccin-macchiato .select select[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato .input[disabled]::-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato .input[disabled]:-moz-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(245,247,253,0.3)}html.theme--catppuccin-macchiato .textarea,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-macchiato .textarea[readonly],html.theme--catppuccin-macchiato .input[readonly],html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-macchiato .is-white.textarea,html.theme--catppuccin-macchiato .is-white.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-macchiato .is-white.textarea:focus,html.theme--catppuccin-macchiato .is-white.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-macchiato .is-white.is-focused.textarea,html.theme--catppuccin-macchiato .is-white.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-white.textarea:active,html.theme--catppuccin-macchiato .is-white.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-macchiato .is-white.is-active.textarea,html.theme--catppuccin-macchiato .is-white.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .is-black.textarea,html.theme--catppuccin-macchiato .is-black.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-macchiato .is-black.textarea:focus,html.theme--catppuccin-macchiato .is-black.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-macchiato .is-black.is-focused.textarea,html.theme--catppuccin-macchiato .is-black.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-black.textarea:active,html.theme--catppuccin-macchiato .is-black.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-macchiato .is-black.is-active.textarea,html.theme--catppuccin-macchiato .is-black.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .is-light.textarea,html.theme--catppuccin-macchiato .is-light.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-macchiato .is-light.textarea:focus,html.theme--catppuccin-macchiato .is-light.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-macchiato .is-light.is-focused.textarea,html.theme--catppuccin-macchiato .is-light.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-light.textarea:active,html.theme--catppuccin-macchiato .is-light.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-macchiato .is-light.is-active.textarea,html.theme--catppuccin-macchiato .is-light.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .is-dark.textarea,html.theme--catppuccin-macchiato .content kbd.textarea,html.theme--catppuccin-macchiato .is-dark.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-macchiato .content kbd.input{border-color:#363a4f}html.theme--catppuccin-macchiato .is-dark.textarea:focus,html.theme--catppuccin-macchiato .content kbd.textarea:focus,html.theme--catppuccin-macchiato .is-dark.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-macchiato .content kbd.input:focus,html.theme--catppuccin-macchiato .is-dark.is-focused.textarea,html.theme--catppuccin-macchiato .content kbd.is-focused.textarea,html.theme--catppuccin-macchiato .is-dark.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .content kbd.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-dark.textarea:active,html.theme--catppuccin-macchiato .content kbd.textarea:active,html.theme--catppuccin-macchiato .is-dark.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-macchiato .content kbd.input:active,html.theme--catppuccin-macchiato .is-dark.is-active.textarea,html.theme--catppuccin-macchiato .content kbd.is-active.textarea,html.theme--catppuccin-macchiato .is-dark.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .content kbd.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .is-primary.textarea,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink{border-color:#8aadf4}html.theme--catppuccin-macchiato .is-primary.textarea:focus,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-macchiato .is-primary.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-macchiato .is-primary.is-focused.textarea,html.theme--catppuccin-macchiato .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.textarea:active,html.theme--catppuccin-macchiato .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-macchiato .is-primary.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-macchiato .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-macchiato .is-primary.is-active.textarea,html.theme--catppuccin-macchiato .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-macchiato .is-primary.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-macchiato .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .is-link.textarea,html.theme--catppuccin-macchiato .is-link.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#8aadf4}html.theme--catppuccin-macchiato .is-link.textarea:focus,html.theme--catppuccin-macchiato .is-link.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-macchiato .is-link.is-focused.textarea,html.theme--catppuccin-macchiato .is-link.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-link.textarea:active,html.theme--catppuccin-macchiato .is-link.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-macchiato .is-link.is-active.textarea,html.theme--catppuccin-macchiato .is-link.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .is-info.textarea,html.theme--catppuccin-macchiato .is-info.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#8bd5ca}html.theme--catppuccin-macchiato .is-info.textarea:focus,html.theme--catppuccin-macchiato .is-info.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-macchiato .is-info.is-focused.textarea,html.theme--catppuccin-macchiato .is-info.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-info.textarea:active,html.theme--catppuccin-macchiato .is-info.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-macchiato .is-info.is-active.textarea,html.theme--catppuccin-macchiato .is-info.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .is-success.textarea,html.theme--catppuccin-macchiato .is-success.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6da95}html.theme--catppuccin-macchiato .is-success.textarea:focus,html.theme--catppuccin-macchiato .is-success.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-macchiato .is-success.is-focused.textarea,html.theme--catppuccin-macchiato .is-success.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-success.textarea:active,html.theme--catppuccin-macchiato .is-success.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-macchiato .is-success.is-active.textarea,html.theme--catppuccin-macchiato .is-success.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .is-warning.textarea,html.theme--catppuccin-macchiato .is-warning.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#eed49f}html.theme--catppuccin-macchiato .is-warning.textarea:focus,html.theme--catppuccin-macchiato .is-warning.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-macchiato .is-warning.is-focused.textarea,html.theme--catppuccin-macchiato .is-warning.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-warning.textarea:active,html.theme--catppuccin-macchiato .is-warning.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-macchiato .is-warning.is-active.textarea,html.theme--catppuccin-macchiato .is-warning.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .is-danger.textarea,html.theme--catppuccin-macchiato .is-danger.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#ed8796}html.theme--catppuccin-macchiato .is-danger.textarea:focus,html.theme--catppuccin-macchiato .is-danger.input:focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-macchiato .is-danger.is-focused.textarea,html.theme--catppuccin-macchiato .is-danger.is-focused.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-macchiato .is-danger.textarea:active,html.theme--catppuccin-macchiato .is-danger.input:active,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-macchiato .is-danger.is-active.textarea,html.theme--catppuccin-macchiato .is-danger.is-active.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .is-small.textarea,html.theme--catppuccin-macchiato .is-small.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-macchiato .is-medium.textarea,html.theme--catppuccin-macchiato .is-medium.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .is-large.textarea,html.theme--catppuccin-macchiato .is-large.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .is-fullwidth.textarea,html.theme--catppuccin-macchiato .is-fullwidth.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-macchiato .is-inline.textarea,html.theme--catppuccin-macchiato .is-inline.input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-macchiato .input.is-rounded,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-macchiato .input.is-static,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-macchiato .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-macchiato .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-macchiato .textarea[rows]{height:initial}html.theme--catppuccin-macchiato .textarea.has-fixed-size{resize:none}html.theme--catppuccin-macchiato .radio,html.theme--catppuccin-macchiato .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-macchiato .radio input,html.theme--catppuccin-macchiato .checkbox input{cursor:pointer}html.theme--catppuccin-macchiato .radio:hover,html.theme--catppuccin-macchiato .checkbox:hover{color:#91d7e3}html.theme--catppuccin-macchiato .radio[disabled],html.theme--catppuccin-macchiato .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-macchiato .radio,fieldset[disabled] html.theme--catppuccin-macchiato .checkbox,html.theme--catppuccin-macchiato .radio input[disabled],html.theme--catppuccin-macchiato .checkbox input[disabled]{color:#f5f7fd;cursor:not-allowed}html.theme--catppuccin-macchiato .radio+.radio{margin-left:.5em}html.theme--catppuccin-macchiato .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-macchiato .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading)::after{border-color:#8aadf4;right:1.125em;z-index:4}html.theme--catppuccin-macchiato .select.is-rounded select,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-macchiato .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-macchiato .select select::-ms-expand{display:none}html.theme--catppuccin-macchiato .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-macchiato .select select:hover{border-color:#1e2030}html.theme--catppuccin-macchiato .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-macchiato .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-macchiato .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-macchiato .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#91d7e3}html.theme--catppuccin-macchiato .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-macchiato .select.is-white select{border-color:#fff}html.theme--catppuccin-macchiato .select.is-white select:hover,html.theme--catppuccin-macchiato .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-macchiato .select.is-white select:focus,html.theme--catppuccin-macchiato .select.is-white select.is-focused,html.theme--catppuccin-macchiato .select.is-white select:active,html.theme--catppuccin-macchiato .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-macchiato .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-macchiato .select.is-black select:hover,html.theme--catppuccin-macchiato .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-macchiato .select.is-black select:focus,html.theme--catppuccin-macchiato .select.is-black select.is-focused,html.theme--catppuccin-macchiato .select.is-black select:active,html.theme--catppuccin-macchiato .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-macchiato .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-macchiato .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-macchiato .select.is-light select:hover,html.theme--catppuccin-macchiato .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-macchiato .select.is-light select:focus,html.theme--catppuccin-macchiato .select.is-light select.is-focused,html.theme--catppuccin-macchiato .select.is-light select:active,html.theme--catppuccin-macchiato .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-macchiato .select.is-dark:not(:hover)::after,html.theme--catppuccin-macchiato .content kbd.select:not(:hover)::after{border-color:#363a4f}html.theme--catppuccin-macchiato .select.is-dark select,html.theme--catppuccin-macchiato .content kbd.select select{border-color:#363a4f}html.theme--catppuccin-macchiato .select.is-dark select:hover,html.theme--catppuccin-macchiato .content kbd.select select:hover,html.theme--catppuccin-macchiato .select.is-dark select.is-hovered,html.theme--catppuccin-macchiato .content kbd.select select.is-hovered{border-color:#2c2f40}html.theme--catppuccin-macchiato .select.is-dark select:focus,html.theme--catppuccin-macchiato .content kbd.select select:focus,html.theme--catppuccin-macchiato .select.is-dark select.is-focused,html.theme--catppuccin-macchiato .content kbd.select select.is-focused,html.theme--catppuccin-macchiato .select.is-dark select:active,html.theme--catppuccin-macchiato .content kbd.select select:active,html.theme--catppuccin-macchiato .select.is-dark select.is-active,html.theme--catppuccin-macchiato .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,58,79,0.25)}html.theme--catppuccin-macchiato .select.is-primary:not(:hover)::after,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-primary select,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-primary select:hover,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-macchiato .select.is-primary select.is-hovered,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#739df2}html.theme--catppuccin-macchiato .select.is-primary select:focus,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-macchiato .select.is-primary select.is-focused,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-macchiato .select.is-primary select:active,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-macchiato .select.is-primary select.is-active,html.theme--catppuccin-macchiato .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select.is-link:not(:hover)::after{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-link select{border-color:#8aadf4}html.theme--catppuccin-macchiato .select.is-link select:hover,html.theme--catppuccin-macchiato .select.is-link select.is-hovered{border-color:#739df2}html.theme--catppuccin-macchiato .select.is-link select:focus,html.theme--catppuccin-macchiato .select.is-link select.is-focused,html.theme--catppuccin-macchiato .select.is-link select:active,html.theme--catppuccin-macchiato .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(138,173,244,0.25)}html.theme--catppuccin-macchiato .select.is-info:not(:hover)::after{border-color:#8bd5ca}html.theme--catppuccin-macchiato .select.is-info select{border-color:#8bd5ca}html.theme--catppuccin-macchiato .select.is-info select:hover,html.theme--catppuccin-macchiato .select.is-info select.is-hovered{border-color:#78cec1}html.theme--catppuccin-macchiato .select.is-info select:focus,html.theme--catppuccin-macchiato .select.is-info select.is-focused,html.theme--catppuccin-macchiato .select.is-info select:active,html.theme--catppuccin-macchiato .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(139,213,202,0.25)}html.theme--catppuccin-macchiato .select.is-success:not(:hover)::after{border-color:#a6da95}html.theme--catppuccin-macchiato .select.is-success select{border-color:#a6da95}html.theme--catppuccin-macchiato .select.is-success select:hover,html.theme--catppuccin-macchiato .select.is-success select.is-hovered{border-color:#96d382}html.theme--catppuccin-macchiato .select.is-success select:focus,html.theme--catppuccin-macchiato .select.is-success select.is-focused,html.theme--catppuccin-macchiato .select.is-success select:active,html.theme--catppuccin-macchiato .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,218,149,0.25)}html.theme--catppuccin-macchiato .select.is-warning:not(:hover)::after{border-color:#eed49f}html.theme--catppuccin-macchiato .select.is-warning select{border-color:#eed49f}html.theme--catppuccin-macchiato .select.is-warning select:hover,html.theme--catppuccin-macchiato .select.is-warning select.is-hovered{border-color:#eaca89}html.theme--catppuccin-macchiato .select.is-warning select:focus,html.theme--catppuccin-macchiato .select.is-warning select.is-focused,html.theme--catppuccin-macchiato .select.is-warning select:active,html.theme--catppuccin-macchiato .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(238,212,159,0.25)}html.theme--catppuccin-macchiato .select.is-danger:not(:hover)::after{border-color:#ed8796}html.theme--catppuccin-macchiato .select.is-danger select{border-color:#ed8796}html.theme--catppuccin-macchiato .select.is-danger select:hover,html.theme--catppuccin-macchiato .select.is-danger select.is-hovered{border-color:#ea7183}html.theme--catppuccin-macchiato .select.is-danger select:focus,html.theme--catppuccin-macchiato .select.is-danger select.is-focused,html.theme--catppuccin-macchiato .select.is-danger select:active,html.theme--catppuccin-macchiato .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(237,135,150,0.25)}html.theme--catppuccin-macchiato .select.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-macchiato .select.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .select.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .select.is-disabled::after{border-color:#f5f7fd !important;opacity:0.5}html.theme--catppuccin-macchiato .select.is-fullwidth{width:100%}html.theme--catppuccin-macchiato .select.is-fullwidth select{width:100%}html.theme--catppuccin-macchiato .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-macchiato .select.is-loading.is-small:after,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-macchiato .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-macchiato .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-macchiato .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-macchiato .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:hover .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:focus .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-white:active .file-cta,html.theme--catppuccin-macchiato .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-macchiato .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-black:hover .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-black:focus .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-black:active .file-cta,html.theme--catppuccin-macchiato .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:hover .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:focus .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-light:active .file-cta,html.theme--catppuccin-macchiato .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-dark .file-cta,html.theme--catppuccin-macchiato .content kbd.file .file-cta{background-color:#363a4f;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-dark:hover .file-cta,html.theme--catppuccin-macchiato .content kbd.file:hover .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-hovered .file-cta{background-color:#313447;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-dark:focus .file-cta,html.theme--catppuccin-macchiato .content kbd.file:focus .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-focused .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,58,79,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-dark:active .file-cta,html.theme--catppuccin-macchiato .content kbd.file:active .file-cta,html.theme--catppuccin-macchiato .file.is-dark.is-active .file-cta,html.theme--catppuccin-macchiato .content kbd.file.is-active .file-cta{background-color:#2c2f40;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary:hover .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-primary:focus .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-focused .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(138,173,244,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-primary:active .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-macchiato .file.is-primary.is-active .file-cta,html.theme--catppuccin-macchiato .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link .file-cta{background-color:#8aadf4;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link:hover .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-hovered .file-cta{background-color:#7ea5f3;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-link:focus .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(138,173,244,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-link:active .file-cta,html.theme--catppuccin-macchiato .file.is-link.is-active .file-cta{background-color:#739df2;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-info .file-cta{background-color:#8bd5ca;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:hover .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-hovered .file-cta{background-color:#82d2c6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:focus .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(139,213,202,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-info:active .file-cta,html.theme--catppuccin-macchiato .file.is-info.is-active .file-cta{background-color:#78cec1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success .file-cta{background-color:#a6da95;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:hover .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-hovered .file-cta{background-color:#9ed78c;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:focus .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,218,149,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-success:active .file-cta,html.theme--catppuccin-macchiato .file.is-success.is-active .file-cta{background-color:#96d382;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning .file-cta{background-color:#eed49f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:hover .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-hovered .file-cta{background-color:#eccf94;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:focus .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(238,212,159,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-warning:active .file-cta,html.theme--catppuccin-macchiato .file.is-warning.is-active .file-cta{background-color:#eaca89;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .file.is-danger .file-cta{background-color:#ed8796;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-danger:hover .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-hovered .file-cta{background-color:#eb7c8c;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-danger:focus .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(237,135,150,0.25);color:#fff}html.theme--catppuccin-macchiato .file.is-danger:active .file-cta,html.theme--catppuccin-macchiato .file.is-danger.is-active .file-cta{background-color:#ea7183;border-color:transparent;color:#fff}html.theme--catppuccin-macchiato .file.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-macchiato .file.is-normal{font-size:1rem}html.theme--catppuccin-macchiato .file.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-macchiato .file.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-macchiato .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-macchiato .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-macchiato .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-macchiato .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-macchiato .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-macchiato .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-macchiato .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-macchiato .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-macchiato .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-macchiato .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-macchiato .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-macchiato .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-macchiato .file.is-centered{justify-content:center}html.theme--catppuccin-macchiato .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-macchiato .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-macchiato .file.is-right{justify-content:flex-end}html.theme--catppuccin-macchiato .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-macchiato .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-macchiato .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-macchiato .file-label:hover .file-cta{background-color:#313447;color:#b5c1f1}html.theme--catppuccin-macchiato .file-label:hover .file-name{border-color:#565a71}html.theme--catppuccin-macchiato .file-label:active .file-cta{background-color:#2c2f40;color:#b5c1f1}html.theme--catppuccin-macchiato .file-label:active .file-name{border-color:#505469}html.theme--catppuccin-macchiato .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-macchiato .file-cta,html.theme--catppuccin-macchiato .file-name{border-color:#5b6078;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-macchiato .file-cta{background-color:#363a4f;color:#cad3f5}html.theme--catppuccin-macchiato .file-name{border-color:#5b6078;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-macchiato .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-macchiato .file-icon .fa{font-size:14px}html.theme--catppuccin-macchiato .label{color:#b5c1f1;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-macchiato .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-macchiato .label.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-macchiato .label.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .label.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-macchiato .help.is-white{color:#fff}html.theme--catppuccin-macchiato .help.is-black{color:#0a0a0a}html.theme--catppuccin-macchiato .help.is-light{color:#f5f5f5}html.theme--catppuccin-macchiato .help.is-dark,html.theme--catppuccin-macchiato .content kbd.help{color:#363a4f}html.theme--catppuccin-macchiato .help.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.help.docs-sourcelink{color:#8aadf4}html.theme--catppuccin-macchiato .help.is-link{color:#8aadf4}html.theme--catppuccin-macchiato .help.is-info{color:#8bd5ca}html.theme--catppuccin-macchiato .help.is-success{color:#a6da95}html.theme--catppuccin-macchiato .help.is-warning{color:#eed49f}html.theme--catppuccin-macchiato .help.is-danger{color:#ed8796}html.theme--catppuccin-macchiato .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-macchiato .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-macchiato .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-macchiato .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-macchiato .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-macchiato .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-macchiato .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-macchiato .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-macchiato .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-macchiato .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-macchiato .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-macchiato .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field.is-horizontal{display:flex}}html.theme--catppuccin-macchiato .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-macchiato .field-label.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-macchiato .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-macchiato .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-macchiato .field-body .field{margin-bottom:0}html.theme--catppuccin-macchiato .field-body>.field{flex-shrink:1}html.theme--catppuccin-macchiato .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-macchiato .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-macchiato .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-macchiato .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select:focus~.icon{color:#363a4f}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-macchiato .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-macchiato .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-macchiato .control.has-icons-left .icon,html.theme--catppuccin-macchiato .control.has-icons-right .icon{color:#5b6078;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-macchiato .control.has-icons-left .input,html.theme--catppuccin-macchiato .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-macchiato .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-macchiato .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-macchiato .control.has-icons-right .input,html.theme--catppuccin-macchiato .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-macchiato .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-macchiato .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-macchiato .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-macchiato .control.is-loading.is-small:after,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-macchiato .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-macchiato .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-macchiato .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-macchiato .breadcrumb a{align-items:center;color:#8aadf4;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-macchiato .breadcrumb a:hover{color:#91d7e3}html.theme--catppuccin-macchiato .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-macchiato .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-macchiato .breadcrumb li.is-active a{color:#b5c1f1;cursor:default;pointer-events:none}html.theme--catppuccin-macchiato .breadcrumb li+li::before{color:#6e738d;content:"\0002f"}html.theme--catppuccin-macchiato .breadcrumb ul,html.theme--catppuccin-macchiato .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-macchiato .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-macchiato .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-macchiato .breadcrumb.is-centered ol,html.theme--catppuccin-macchiato .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-macchiato .breadcrumb.is-right ol,html.theme--catppuccin-macchiato .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-macchiato .breadcrumb.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-macchiato .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-macchiato .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-macchiato .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-macchiato .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-macchiato .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#cad3f5;max-width:100%;position:relative}html.theme--catppuccin-macchiato .card-footer:first-child,html.theme--catppuccin-macchiato .card-content:first-child,html.theme--catppuccin-macchiato .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-macchiato .card-footer:last-child,html.theme--catppuccin-macchiato .card-content:last-child,html.theme--catppuccin-macchiato .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-macchiato .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-macchiato .card-header-title{align-items:center;color:#b5c1f1;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-macchiato .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-macchiato .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-macchiato .card-image{display:block;position:relative}html.theme--catppuccin-macchiato .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-macchiato .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-macchiato .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-macchiato .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-macchiato .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-macchiato .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-macchiato .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-macchiato .dropdown.is-active .dropdown-menu,html.theme--catppuccin-macchiato .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-macchiato .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-macchiato .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-macchiato .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-macchiato .dropdown-content{background-color:#1e2030;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-macchiato .dropdown-item{color:#cad3f5;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-macchiato a.dropdown-item,html.theme--catppuccin-macchiato button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-macchiato a.dropdown-item:hover,html.theme--catppuccin-macchiato button.dropdown-item:hover{background-color:#1e2030;color:#0a0a0a}html.theme--catppuccin-macchiato a.dropdown-item.is-active,html.theme--catppuccin-macchiato button.dropdown-item.is-active{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-macchiato .level{align-items:center;justify-content:space-between}html.theme--catppuccin-macchiato .level code{border-radius:.4em}html.theme--catppuccin-macchiato .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-macchiato .level.is-mobile{display:flex}html.theme--catppuccin-macchiato .level.is-mobile .level-left,html.theme--catppuccin-macchiato .level.is-mobile .level-right{display:flex}html.theme--catppuccin-macchiato .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-macchiato .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-macchiato .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level{display:flex}html.theme--catppuccin-macchiato .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-macchiato .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-macchiato .level-item .title,html.theme--catppuccin-macchiato .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-macchiato .level-left,html.theme--catppuccin-macchiato .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .level-left .level-item.is-flexible,html.theme--catppuccin-macchiato .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-left .level-item:not(:last-child),html.theme--catppuccin-macchiato .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-macchiato .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-left{display:flex}}html.theme--catppuccin-macchiato .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .level-right{display:flex}}html.theme--catppuccin-macchiato .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-macchiato .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-macchiato .media .media{border-top:1px solid rgba(91,96,120,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-macchiato .media .media .content:not(:last-child),html.theme--catppuccin-macchiato .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-macchiato .media .media .media{padding-top:.5rem}html.theme--catppuccin-macchiato .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-macchiato .media+.media{border-top:1px solid rgba(91,96,120,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-macchiato .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-macchiato .media-left,html.theme--catppuccin-macchiato .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .media-left{margin-right:1rem}html.theme--catppuccin-macchiato .media-right{margin-left:1rem}html.theme--catppuccin-macchiato .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .media-content{overflow-x:auto}}html.theme--catppuccin-macchiato .menu{font-size:1rem}html.theme--catppuccin-macchiato .menu.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-macchiato .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .menu.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .menu-list{line-height:1.25}html.theme--catppuccin-macchiato .menu-list a{border-radius:3px;color:#cad3f5;display:block;padding:0.5em 0.75em}html.theme--catppuccin-macchiato .menu-list a:hover{background-color:#1e2030;color:#b5c1f1}html.theme--catppuccin-macchiato .menu-list a.is-active{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .menu-list li ul{border-left:1px solid #5b6078;margin:.75em;padding-left:.75em}html.theme--catppuccin-macchiato .menu-label{color:#f5f7fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-macchiato .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-macchiato .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-macchiato .message{background-color:#1e2030;border-radius:.4em;font-size:1rem}html.theme--catppuccin-macchiato .message strong{color:currentColor}html.theme--catppuccin-macchiato .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-macchiato .message.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-macchiato .message.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .message.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .message.is-white{background-color:#fff}html.theme--catppuccin-macchiato .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-macchiato .message.is-black{background-color:#fafafa}html.theme--catppuccin-macchiato .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-macchiato .message.is-light{background-color:#fafafa}html.theme--catppuccin-macchiato .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-macchiato .message.is-dark,html.theme--catppuccin-macchiato .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-macchiato .message.is-dark .message-header,html.theme--catppuccin-macchiato .content kbd.message .message-header{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .message.is-dark .message-body,html.theme--catppuccin-macchiato .content kbd.message .message-body{border-color:#363a4f}html.theme--catppuccin-macchiato .message.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink{background-color:#ecf2fd}html.theme--catppuccin-macchiato .message.is-primary .message-header,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink .message-header{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .message.is-primary .message-body,html.theme--catppuccin-macchiato .docstring>section>a.message.docs-sourcelink .message-body{border-color:#8aadf4;color:#0e3b95}html.theme--catppuccin-macchiato .message.is-link{background-color:#ecf2fd}html.theme--catppuccin-macchiato .message.is-link .message-header{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .message.is-link .message-body{border-color:#8aadf4;color:#0e3b95}html.theme--catppuccin-macchiato .message.is-info{background-color:#f0faf8}html.theme--catppuccin-macchiato .message.is-info .message-header{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-info .message-body{border-color:#8bd5ca;color:#276d62}html.theme--catppuccin-macchiato .message.is-success{background-color:#f2faf0}html.theme--catppuccin-macchiato .message.is-success .message-header{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-success .message-body{border-color:#a6da95;color:#386e26}html.theme--catppuccin-macchiato .message.is-warning{background-color:#fcf7ee}html.theme--catppuccin-macchiato .message.is-warning .message-header{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .message.is-warning .message-body{border-color:#eed49f;color:#7e5c16}html.theme--catppuccin-macchiato .message.is-danger{background-color:#fcedef}html.theme--catppuccin-macchiato .message.is-danger .message-header{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .message.is-danger .message-body{border-color:#ed8796;color:#971729}html.theme--catppuccin-macchiato .message-header{align-items:center;background-color:#cad3f5;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-macchiato .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-macchiato .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-macchiato .message-body{border-color:#5b6078;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#cad3f5;padding:1.25em 1.5em}html.theme--catppuccin-macchiato .message-body code,html.theme--catppuccin-macchiato .message-body pre{background-color:#fff}html.theme--catppuccin-macchiato .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-macchiato .modal.is-active{display:flex}html.theme--catppuccin-macchiato .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-macchiato .modal-content,html.theme--catppuccin-macchiato .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-macchiato .modal-content,html.theme--catppuccin-macchiato .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-macchiato .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-macchiato .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-macchiato .modal-card-head,html.theme--catppuccin-macchiato .modal-card-foot{align-items:center;background-color:#1e2030;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-macchiato .modal-card-head{border-bottom:1px solid #5b6078;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-macchiato .modal-card-title{color:#cad3f5;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-macchiato .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5b6078}html.theme--catppuccin-macchiato .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-macchiato .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#24273a;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-macchiato .navbar{background-color:#8aadf4;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-macchiato .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-macchiato .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-dark,html.theme--catppuccin-macchiato .content kbd.navbar{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-burger,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363a4f;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-burger,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4;color:#fff}}html.theme--catppuccin-macchiato .navbar.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6da95;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#eed49f;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-macchiato .navbar.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#ed8796;color:#fff}}html.theme--catppuccin-macchiato .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-macchiato .navbar.has-shadow{box-shadow:0 2px 0 0 #1e2030}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom,html.theme--catppuccin-macchiato .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #1e2030}html.theme--catppuccin-macchiato .navbar.is-fixed-top{top:0}html.theme--catppuccin-macchiato html.has-navbar-fixed-top,html.theme--catppuccin-macchiato body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-macchiato .navbar-brand,html.theme--catppuccin-macchiato .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-macchiato .navbar-brand a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-macchiato .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-macchiato .navbar-burger{color:#cad3f5;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-macchiato .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-macchiato .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-macchiato .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-macchiato .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-macchiato .navbar-menu{display:none}html.theme--catppuccin-macchiato .navbar-item,html.theme--catppuccin-macchiato .navbar-link{color:#cad3f5;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-macchiato .navbar-item .icon:only-child,html.theme--catppuccin-macchiato .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-macchiato a.navbar-item,html.theme--catppuccin-macchiato .navbar-link{cursor:pointer}html.theme--catppuccin-macchiato a.navbar-item:focus,html.theme--catppuccin-macchiato a.navbar-item:focus-within,html.theme--catppuccin-macchiato a.navbar-item:hover,html.theme--catppuccin-macchiato a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar-link:focus,html.theme--catppuccin-macchiato .navbar-link:focus-within,html.theme--catppuccin-macchiato .navbar-link:hover,html.theme--catppuccin-macchiato .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}html.theme--catppuccin-macchiato .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .navbar-item img{max-height:1.75rem}html.theme--catppuccin-macchiato .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-macchiato .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-macchiato .navbar-item.is-tab:focus,html.theme--catppuccin-macchiato .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#8aadf4;border-bottom-style:solid;border-bottom-width:3px;color:#8aadf4;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-macchiato .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-macchiato .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-macchiato .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-macchiato .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-macchiato .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .navbar>.container{display:block}html.theme--catppuccin-macchiato .navbar-brand .navbar-item,html.theme--catppuccin-macchiato .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-macchiato .navbar-link::after{display:none}html.theme--catppuccin-macchiato .navbar-menu{background-color:#8aadf4;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-macchiato .navbar-menu.is-active{display:block}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch,html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-macchiato .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-macchiato .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-macchiato html.has-navbar-fixed-top-touch,html.theme--catppuccin-macchiato body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .navbar,html.theme--catppuccin-macchiato .navbar-menu,html.theme--catppuccin-macchiato .navbar-start,html.theme--catppuccin-macchiato .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-macchiato .navbar{min-height:4rem}html.theme--catppuccin-macchiato .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-start,html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-macchiato .navbar.is-spaced a.navbar-item,html.theme--catppuccin-macchiato .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-macchiato .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8087a2}html.theme--catppuccin-macchiato .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}html.theme--catppuccin-macchiato .navbar-burger{display:none}html.theme--catppuccin-macchiato .navbar-item,html.theme--catppuccin-macchiato .navbar-link{align-items:center;display:flex}html.theme--catppuccin-macchiato .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-macchiato .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-macchiato .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-macchiato .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-macchiato .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-macchiato .navbar-dropdown{background-color:#8aadf4;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-macchiato .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#8087a2}html.theme--catppuccin-macchiato .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#8aadf4}.navbar.is-spaced html.theme--catppuccin-macchiato .navbar-dropdown,html.theme--catppuccin-macchiato .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-macchiato .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-macchiato .navbar-divider{display:block}html.theme--catppuccin-macchiato .navbar>.container .navbar-brand,html.theme--catppuccin-macchiato .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-macchiato .navbar>.container .navbar-menu,html.theme--catppuccin-macchiato .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-macchiato .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-macchiato .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-macchiato html.has-navbar-fixed-top-desktop,html.theme--catppuccin-macchiato body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-macchiato html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-macchiato body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-macchiato html.has-spaced-navbar-fixed-top,html.theme--catppuccin-macchiato body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-macchiato html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-macchiato body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-macchiato a.navbar-item.is-active,html.theme--catppuccin-macchiato .navbar-link.is-active{color:#8aadf4}html.theme--catppuccin-macchiato a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-macchiato .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-macchiato .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-macchiato .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-macchiato .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-macchiato .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-macchiato .pagination.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-macchiato .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-previous,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-next,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-macchiato .pagination.is-rounded .pagination-link,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-macchiato .pagination,html.theme--catppuccin-macchiato .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link{border-color:#5b6078;color:#8aadf4;min-width:2.5em}html.theme--catppuccin-macchiato .pagination-previous:hover,html.theme--catppuccin-macchiato .pagination-next:hover,html.theme--catppuccin-macchiato .pagination-link:hover{border-color:#6e738d;color:#91d7e3}html.theme--catppuccin-macchiato .pagination-previous:focus,html.theme--catppuccin-macchiato .pagination-next:focus,html.theme--catppuccin-macchiato .pagination-link:focus{border-color:#6e738d}html.theme--catppuccin-macchiato .pagination-previous:active,html.theme--catppuccin-macchiato .pagination-next:active,html.theme--catppuccin-macchiato .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-macchiato .pagination-previous[disabled],html.theme--catppuccin-macchiato .pagination-previous.is-disabled,html.theme--catppuccin-macchiato .pagination-next[disabled],html.theme--catppuccin-macchiato .pagination-next.is-disabled,html.theme--catppuccin-macchiato .pagination-link[disabled],html.theme--catppuccin-macchiato .pagination-link.is-disabled{background-color:#5b6078;border-color:#5b6078;box-shadow:none;color:#f5f7fd;opacity:0.5}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-macchiato .pagination-link.is-current{background-color:#8aadf4;border-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .pagination-ellipsis{color:#6e738d;pointer-events:none}html.theme--catppuccin-macchiato .pagination-list{flex-wrap:wrap}html.theme--catppuccin-macchiato .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .pagination{flex-wrap:wrap}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-macchiato .pagination-previous{order:2}html.theme--catppuccin-macchiato .pagination-next{order:3}html.theme--catppuccin-macchiato .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-macchiato .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-macchiato .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-macchiato .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-macchiato .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-macchiato .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-macchiato .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-macchiato .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-macchiato .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-macchiato .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-macchiato .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-macchiato .panel.is-dark .panel-heading,html.theme--catppuccin-macchiato .content kbd.panel .panel-heading{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-macchiato .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363a4f}html.theme--catppuccin-macchiato .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-macchiato .content kbd.panel .panel-block.is-active .panel-icon{color:#363a4f}html.theme--catppuccin-macchiato .panel.is-primary .panel-heading,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-macchiato .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-link .panel-heading{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .panel.is-link .panel-tabs a.is-active{border-bottom-color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-link .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel.is-info .panel-heading{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-info .panel-tabs a.is-active{border-bottom-color:#8bd5ca}html.theme--catppuccin-macchiato .panel.is-info .panel-block.is-active .panel-icon{color:#8bd5ca}html.theme--catppuccin-macchiato .panel.is-success .panel-heading{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6da95}html.theme--catppuccin-macchiato .panel.is-success .panel-block.is-active .panel-icon{color:#a6da95}html.theme--catppuccin-macchiato .panel.is-warning .panel-heading{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#eed49f}html.theme--catppuccin-macchiato .panel.is-warning .panel-block.is-active .panel-icon{color:#eed49f}html.theme--catppuccin-macchiato .panel.is-danger .panel-heading{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#ed8796}html.theme--catppuccin-macchiato .panel.is-danger .panel-block.is-active .panel-icon{color:#ed8796}html.theme--catppuccin-macchiato .panel-tabs:not(:last-child),html.theme--catppuccin-macchiato .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-macchiato .panel-heading{background-color:#494d64;border-radius:8px 8px 0 0;color:#b5c1f1;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-macchiato .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-macchiato .panel-tabs a{border-bottom:1px solid #5b6078;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-macchiato .panel-tabs a.is-active{border-bottom-color:#494d64;color:#739df2}html.theme--catppuccin-macchiato .panel-list a{color:#cad3f5}html.theme--catppuccin-macchiato .panel-list a:hover{color:#8aadf4}html.theme--catppuccin-macchiato .panel-block{align-items:center;color:#b5c1f1;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-macchiato .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-macchiato .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-macchiato .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-macchiato .panel-block.is-active{border-left-color:#8aadf4;color:#739df2}html.theme--catppuccin-macchiato .panel-block.is-active .panel-icon{color:#8aadf4}html.theme--catppuccin-macchiato .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-macchiato a.panel-block,html.theme--catppuccin-macchiato label.panel-block{cursor:pointer}html.theme--catppuccin-macchiato a.panel-block:hover,html.theme--catppuccin-macchiato label.panel-block:hover{background-color:#1e2030}html.theme--catppuccin-macchiato .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f5f7fd;margin-right:.75em}html.theme--catppuccin-macchiato .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-macchiato .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-macchiato .tabs a{align-items:center;border-bottom-color:#5b6078;border-bottom-style:solid;border-bottom-width:1px;color:#cad3f5;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-macchiato .tabs a:hover{border-bottom-color:#b5c1f1;color:#b5c1f1}html.theme--catppuccin-macchiato .tabs li{display:block}html.theme--catppuccin-macchiato .tabs li.is-active a{border-bottom-color:#8aadf4;color:#8aadf4}html.theme--catppuccin-macchiato .tabs ul{align-items:center;border-bottom-color:#5b6078;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-macchiato .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-macchiato .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-macchiato .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-macchiato .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-macchiato .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-macchiato .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-macchiato .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-macchiato .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-macchiato .tabs.is-boxed a:hover{background-color:#1e2030;border-bottom-color:#5b6078}html.theme--catppuccin-macchiato .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5b6078;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-macchiato .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-macchiato .tabs.is-toggle a{border-color:#5b6078;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-macchiato .tabs.is-toggle a:hover{background-color:#1e2030;border-color:#6e738d;z-index:2}html.theme--catppuccin-macchiato .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-macchiato .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-macchiato .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-macchiato .tabs.is-toggle li.is-active a{background-color:#8aadf4;border-color:#8aadf4;color:#fff;z-index:1}html.theme--catppuccin-macchiato .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-macchiato .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-macchiato .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-macchiato .tabs.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-macchiato .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-macchiato .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .column.is-narrow,html.theme--catppuccin-macchiato .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full,html.theme--catppuccin-macchiato .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters,html.theme--catppuccin-macchiato .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds,html.theme--catppuccin-macchiato .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half,html.theme--catppuccin-macchiato .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third,html.theme--catppuccin-macchiato .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter,html.theme--catppuccin-macchiato .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth,html.theme--catppuccin-macchiato .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths,html.theme--catppuccin-macchiato .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths,html.theme--catppuccin-macchiato .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths,html.theme--catppuccin-macchiato .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters,html.theme--catppuccin-macchiato .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds,html.theme--catppuccin-macchiato .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half,html.theme--catppuccin-macchiato .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third,html.theme--catppuccin-macchiato .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter,html.theme--catppuccin-macchiato .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth,html.theme--catppuccin-macchiato .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths,html.theme--catppuccin-macchiato .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths,html.theme--catppuccin-macchiato .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths,html.theme--catppuccin-macchiato .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0,html.theme--catppuccin-macchiato .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0,html.theme--catppuccin-macchiato .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1,html.theme--catppuccin-macchiato .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1,html.theme--catppuccin-macchiato .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2,html.theme--catppuccin-macchiato .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2,html.theme--catppuccin-macchiato .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3,html.theme--catppuccin-macchiato .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3,html.theme--catppuccin-macchiato .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4,html.theme--catppuccin-macchiato .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4,html.theme--catppuccin-macchiato .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5,html.theme--catppuccin-macchiato .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5,html.theme--catppuccin-macchiato .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6,html.theme--catppuccin-macchiato .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6,html.theme--catppuccin-macchiato .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7,html.theme--catppuccin-macchiato .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7,html.theme--catppuccin-macchiato .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8,html.theme--catppuccin-macchiato .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8,html.theme--catppuccin-macchiato .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9,html.theme--catppuccin-macchiato .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9,html.theme--catppuccin-macchiato .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10,html.theme--catppuccin-macchiato .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10,html.theme--catppuccin-macchiato .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11,html.theme--catppuccin-macchiato .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11,html.theme--catppuccin-macchiato .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12,html.theme--catppuccin-macchiato .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12,html.theme--catppuccin-macchiato .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-macchiato .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-macchiato .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-macchiato .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-macchiato .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-macchiato .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-macchiato .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-macchiato .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-macchiato .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-macchiato .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-macchiato .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-macchiato .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-macchiato .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-macchiato .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-macchiato .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-macchiato .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-macchiato .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-macchiato .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-macchiato .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-macchiato .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-macchiato .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-macchiato .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-macchiato .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-macchiato .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-macchiato .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-macchiato .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-macchiato .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-macchiato .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-macchiato .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-macchiato .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-macchiato .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-macchiato .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-macchiato .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-macchiato .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-macchiato .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-macchiato .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-macchiato .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-macchiato .columns.is-centered{justify-content:center}html.theme--catppuccin-macchiato .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-macchiato .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-macchiato .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-macchiato .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-macchiato .columns.is-mobile{display:flex}html.theme--catppuccin-macchiato .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-macchiato .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-desktop{display:flex}}html.theme--catppuccin-macchiato .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-macchiato .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-macchiato .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-macchiato .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-macchiato .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-macchiato .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-macchiato .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-macchiato .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-macchiato .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-macchiato .tile.is-child{margin:0 !important}html.theme--catppuccin-macchiato .tile.is-parent{padding:.75rem}html.theme--catppuccin-macchiato .tile.is-vertical{flex-direction:column}html.theme--catppuccin-macchiato .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .tile:not(.is-child){display:flex}html.theme--catppuccin-macchiato .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-macchiato .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-macchiato .tile.is-3{flex:none;width:25%}html.theme--catppuccin-macchiato .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-macchiato .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-macchiato .tile.is-6{flex:none;width:50%}html.theme--catppuccin-macchiato .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-macchiato .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-macchiato .tile.is-9{flex:none;width:75%}html.theme--catppuccin-macchiato .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-macchiato .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-macchiato .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-macchiato .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-macchiato .hero .navbar{background:none}html.theme--catppuccin-macchiato .hero .tabs ul{border-bottom:none}html.theme--catppuccin-macchiato .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-white strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-macchiato .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-macchiato .hero.is-white .navbar-item,html.theme--catppuccin-macchiato .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-macchiato .hero.is-white a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-white .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-macchiato .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-macchiato .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-black strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-black .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-macchiato .hero.is-black .navbar-item,html.theme--catppuccin-macchiato .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-black a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-black .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-macchiato .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-macchiato .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-macchiato .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-light strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-macchiato .hero.is-light .navbar-item,html.theme--catppuccin-macchiato .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-light .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-macchiato .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-macchiato .hero.is-dark,html.theme--catppuccin-macchiato .content kbd.hero{background-color:#363a4f;color:#fff}html.theme--catppuccin-macchiato .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-dark strong,html.theme--catppuccin-macchiato .content kbd.hero strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-dark .title,html.theme--catppuccin-macchiato .content kbd.hero .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .subtitle,html.theme--catppuccin-macchiato .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-macchiato .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-dark .subtitle strong,html.theme--catppuccin-macchiato .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-dark .navbar-menu,html.theme--catppuccin-macchiato .content kbd.hero .navbar-menu{background-color:#363a4f}}html.theme--catppuccin-macchiato .hero.is-dark .navbar-item,html.theme--catppuccin-macchiato .content kbd.hero .navbar-item,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-macchiato .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-macchiato .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link:hover,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-macchiato .content kbd.hero .navbar-link.is-active{background-color:#2c2f40;color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .tabs a,html.theme--catppuccin-macchiato .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-dark .tabs a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs li.is-active a{color:#363a4f !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363a4f}html.theme--catppuccin-macchiato .hero.is-dark.is-bold,html.theme--catppuccin-macchiato .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1d2535 0%, #363a4f 71%, #3d3c62 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-macchiato .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1d2535 0%, #363a4f 71%, #3d3c62 100%)}}html.theme--catppuccin-macchiato .hero.is-primary,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-primary strong,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-primary .title,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .subtitle,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-primary .subtitle strong,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-primary .navbar-menu,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#8aadf4}}html.theme--catppuccin-macchiato .hero.is-primary .navbar-item,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .tabs a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-primary .tabs a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#8aadf4 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .hero.is-primary.is-bold,html.theme--catppuccin-macchiato .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-macchiato .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}}html.theme--catppuccin-macchiato .hero.is-link{background-color:#8aadf4;color:#fff}html.theme--catppuccin-macchiato .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-link strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-link .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-link .navbar-menu{background-color:#8aadf4}}html.theme--catppuccin-macchiato .hero.is-link .navbar-item,html.theme--catppuccin-macchiato .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-link a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-link .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-link .navbar-link.is-active{background-color:#739df2;color:#fff}html.theme--catppuccin-macchiato .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-link .tabs li.is-active a{color:#8aadf4 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#8aadf4}html.theme--catppuccin-macchiato .hero.is-link.is-bold{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #52a5f9 0%, #8aadf4 71%, #9fadf9 100%)}}html.theme--catppuccin-macchiato .hero.is-info{background-color:#8bd5ca;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-info strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-info .navbar-menu{background-color:#8bd5ca}}html.theme--catppuccin-macchiato .hero.is-info .navbar-item,html.theme--catppuccin-macchiato .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-info .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-info .navbar-link.is-active{background-color:#78cec1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-info .tabs li.is-active a{color:#8bd5ca !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#8bd5ca}html.theme--catppuccin-macchiato .hero.is-info.is-bold{background-image:linear-gradient(141deg, #5bd2ac 0%, #8bd5ca 71%, #9adedf 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #5bd2ac 0%, #8bd5ca 71%, #9adedf 100%)}}html.theme--catppuccin-macchiato .hero.is-success{background-color:#a6da95;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-success strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-success .navbar-menu{background-color:#a6da95}}html.theme--catppuccin-macchiato .hero.is-success .navbar-item,html.theme--catppuccin-macchiato .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-success .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-success .navbar-link.is-active{background-color:#96d382;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-success .tabs li.is-active a{color:#a6da95 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6da95}html.theme--catppuccin-macchiato .hero.is-success.is-bold{background-image:linear-gradient(141deg, #94d765 0%, #a6da95 71%, #aae4a5 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #94d765 0%, #a6da95 71%, #aae4a5 100%)}}html.theme--catppuccin-macchiato .hero.is-warning{background-color:#eed49f;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-warning strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-macchiato .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-warning .navbar-menu{background-color:#eed49f}}html.theme--catppuccin-macchiato .hero.is-warning .navbar-item,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-warning .navbar-link.is-active{background-color:#eaca89;color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-macchiato .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-warning .tabs li.is-active a{color:#eed49f !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#eed49f}html.theme--catppuccin-macchiato .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #efae6b 0%, #eed49f 71%, #f4e9b2 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #efae6b 0%, #eed49f 71%, #f4e9b2 100%)}}html.theme--catppuccin-macchiato .hero.is-danger{background-color:#ed8796;color:#fff}html.theme--catppuccin-macchiato .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-macchiato .hero.is-danger strong{color:inherit}html.theme--catppuccin-macchiato .hero.is-danger .title{color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-macchiato .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-macchiato .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .hero.is-danger .navbar-menu{background-color:#ed8796}}html.theme--catppuccin-macchiato .hero.is-danger .navbar-item,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-macchiato .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-macchiato .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link:hover,html.theme--catppuccin-macchiato .hero.is-danger .navbar-link.is-active{background-color:#ea7183;color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-macchiato .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-macchiato .hero.is-danger .tabs li.is-active a{color:#ed8796 !important;opacity:1}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-macchiato .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ed8796}html.theme--catppuccin-macchiato .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #f05183 0%, #ed8796 71%, #f39c9a 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f05183 0%, #ed8796 71%, #f39c9a 100%)}}html.theme--catppuccin-macchiato .hero.is-small .hero-body,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-macchiato .hero.is-halfheight .hero-body,html.theme--catppuccin-macchiato .hero.is-fullheight .hero-body,html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-macchiato .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-macchiato .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-macchiato .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-macchiato .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-macchiato .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-macchiato .hero-video{overflow:hidden}html.theme--catppuccin-macchiato .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-macchiato .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero-video{display:none}}html.theme--catppuccin-macchiato .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-macchiato .hero-buttons .button{display:flex}html.theme--catppuccin-macchiato .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-macchiato .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-macchiato .hero-head,html.theme--catppuccin-macchiato .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-macchiato .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-macchiato .hero-body{padding:3rem 3rem}}html.theme--catppuccin-macchiato .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato .section{padding:3rem 3rem}html.theme--catppuccin-macchiato .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-macchiato .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-macchiato .footer{background-color:#1e2030;padding:3rem 1.5rem 6rem}html.theme--catppuccin-macchiato h1 .docs-heading-anchor,html.theme--catppuccin-macchiato h1 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h1 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h2 .docs-heading-anchor,html.theme--catppuccin-macchiato h2 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h2 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h3 .docs-heading-anchor,html.theme--catppuccin-macchiato h3 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h3 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h4 .docs-heading-anchor,html.theme--catppuccin-macchiato h4 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h4 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h5 .docs-heading-anchor,html.theme--catppuccin-macchiato h5 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h5 .docs-heading-anchor:visited,html.theme--catppuccin-macchiato h6 .docs-heading-anchor,html.theme--catppuccin-macchiato h6 .docs-heading-anchor:hover,html.theme--catppuccin-macchiato h6 .docs-heading-anchor:visited{color:#cad3f5}html.theme--catppuccin-macchiato h1 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h2 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h3 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h4 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h5 .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-macchiato h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-macchiato h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-macchiato h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-macchiato h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-macchiato .docs-light-only{display:none !important}html.theme--catppuccin-macchiato pre{position:relative;overflow:hidden}html.theme--catppuccin-macchiato pre code,html.theme--catppuccin-macchiato pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-macchiato pre code:first-of-type,html.theme--catppuccin-macchiato pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-macchiato pre code:last-of-type,html.theme--catppuccin-macchiato pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-macchiato pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#cad3f5;cursor:pointer;text-align:center}html.theme--catppuccin-macchiato pre .copy-button:focus,html.theme--catppuccin-macchiato pre .copy-button:hover{opacity:1;background:rgba(202,211,245,0.1);color:#8aadf4}html.theme--catppuccin-macchiato pre .copy-button.success{color:#a6da95;opacity:1}html.theme--catppuccin-macchiato pre .copy-button.error{color:#ed8796;opacity:1}html.theme--catppuccin-macchiato pre:hover .copy-button{opacity:1}html.theme--catppuccin-macchiato .admonition{background-color:#1e2030;border-style:solid;border-width:2px;border-color:#b8c0e0;border-radius:4px;font-size:1rem}html.theme--catppuccin-macchiato .admonition strong{color:currentColor}html.theme--catppuccin-macchiato .admonition.is-small,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-macchiato .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-macchiato .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-macchiato .admonition.is-default{background-color:#1e2030;border-color:#b8c0e0}html.theme--catppuccin-macchiato .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#b8c0e0}html.theme--catppuccin-macchiato .admonition.is-default>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-info{background-color:#1e2030;border-color:#8bd5ca}html.theme--catppuccin-macchiato .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#8bd5ca}html.theme--catppuccin-macchiato .admonition.is-info>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-success{background-color:#1e2030;border-color:#a6da95}html.theme--catppuccin-macchiato .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6da95}html.theme--catppuccin-macchiato .admonition.is-success>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-warning{background-color:#1e2030;border-color:#eed49f}html.theme--catppuccin-macchiato .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#eed49f}html.theme--catppuccin-macchiato .admonition.is-warning>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-danger{background-color:#1e2030;border-color:#ed8796}html.theme--catppuccin-macchiato .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#ed8796}html.theme--catppuccin-macchiato .admonition.is-danger>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-compat{background-color:#1e2030;border-color:#91d7e3}html.theme--catppuccin-macchiato .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#91d7e3}html.theme--catppuccin-macchiato .admonition.is-compat>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition.is-todo{background-color:#1e2030;border-color:#c6a0f6}html.theme--catppuccin-macchiato .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#c6a0f6}html.theme--catppuccin-macchiato .admonition.is-todo>.admonition-body{color:#cad3f5}html.theme--catppuccin-macchiato .admonition-header{color:#b8c0e0;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-macchiato .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-macchiato details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-macchiato details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-macchiato details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-macchiato .admonition-body{color:#cad3f5;padding:0.5rem .75rem}html.theme--catppuccin-macchiato .admonition-body pre{background-color:#1e2030}html.theme--catppuccin-macchiato .admonition-body code{background-color:#1e2030}html.theme--catppuccin-macchiato .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #5b6078;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-macchiato .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#1e2030;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5b6078;overflow:auto}html.theme--catppuccin-macchiato .docstring>header code{background-color:transparent}html.theme--catppuccin-macchiato .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-macchiato .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-macchiato .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-macchiato .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5b6078}html.theme--catppuccin-macchiato .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-macchiato .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-macchiato .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-macchiato .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-macchiato .documenter-example-output{background-color:#24273a}html.theme--catppuccin-macchiato .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#1e2030;color:#cad3f5;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-macchiato .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-macchiato .outdated-warning-overlay a{color:#8aadf4}html.theme--catppuccin-macchiato .outdated-warning-overlay a:hover{color:#91d7e3}html.theme--catppuccin-macchiato .content pre{border:2px solid #5b6078;border-radius:4px}html.theme--catppuccin-macchiato .content code{font-weight:inherit}html.theme--catppuccin-macchiato .content a code{color:#8aadf4}html.theme--catppuccin-macchiato .content a:hover code{color:#91d7e3}html.theme--catppuccin-macchiato .content h1 code,html.theme--catppuccin-macchiato .content h2 code,html.theme--catppuccin-macchiato .content h3 code,html.theme--catppuccin-macchiato .content h4 code,html.theme--catppuccin-macchiato .content h5 code,html.theme--catppuccin-macchiato .content h6 code{color:#cad3f5}html.theme--catppuccin-macchiato .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-macchiato .content blockquote>ul:first-child,html.theme--catppuccin-macchiato .content blockquote>ol:first-child,html.theme--catppuccin-macchiato .content .admonition-body>ul:first-child,html.theme--catppuccin-macchiato .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-macchiato pre,html.theme--catppuccin-macchiato code{font-variant-ligatures:no-contextual}html.theme--catppuccin-macchiato .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-macchiato .breadcrumb a.is-disabled,html.theme--catppuccin-macchiato .breadcrumb a.is-disabled:hover{color:#b5c1f1}html.theme--catppuccin-macchiato .hljs{background:initial !important}html.theme--catppuccin-macchiato .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-macchiato .katex-display,html.theme--catppuccin-macchiato mjx-container,html.theme--catppuccin-macchiato .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-macchiato html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-macchiato li.no-marker{list-style:none}html.theme--catppuccin-macchiato #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-macchiato #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main{width:100%}html.theme--catppuccin-macchiato #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-macchiato #documenter .docs-main>header,html.theme--catppuccin-macchiato #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar{background-color:#24273a;border-bottom:1px solid #5b6078;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-macchiato #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes{border-top:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-macchiato #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-macchiato .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5b6078;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-macchiato #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-macchiato #documenter .docs-sidebar{display:flex;flex-direction:column;color:#cad3f5;background-color:#1e2030;border-right:1px solid #5b6078;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-macchiato #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-package-name a:hover{color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5b6078;display:none;padding:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5b6078;padding-bottom:1.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#cad3f5;background:#1e2030}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#cad3f5;background-color:#26283d}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5b6078;border-bottom:1px solid #5b6078;background-color:#181926}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#181926;color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#26283d;color:#cad3f5}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5b6078}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-macchiato #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#2e3149}html.theme--catppuccin-macchiato #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#3d4162}}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#2e3149}html.theme--catppuccin-macchiato #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#3d4162}}html.theme--catppuccin-macchiato kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-macchiato .search-min-width-50{min-width:50%}html.theme--catppuccin-macchiato .search-min-height-100{min-height:100%}html.theme--catppuccin-macchiato .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-macchiato .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover,html.theme--catppuccin-macchiato .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-macchiato .search-result-link .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-macchiato .property-search-result-badge,html.theme--catppuccin-macchiato .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-macchiato .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:hover .search-filter,html.theme--catppuccin-macchiato .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-macchiato .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-macchiato .search-filter:hover,html.theme--catppuccin-macchiato .search-filter:focus{color:#333}html.theme--catppuccin-macchiato .search-filter-selected{color:#363a4f;background-color:#b7bdf8}html.theme--catppuccin-macchiato .search-filter-selected:hover,html.theme--catppuccin-macchiato .search-filter-selected:focus{color:#363a4f}html.theme--catppuccin-macchiato .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-macchiato .search-divider{border-bottom:1px solid #5b6078}html.theme--catppuccin-macchiato .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-macchiato .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-macchiato #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-macchiato #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-macchiato .w-100{width:100%}html.theme--catppuccin-macchiato .gap-2{gap:0.5rem}html.theme--catppuccin-macchiato .gap-4{gap:1rem}html.theme--catppuccin-macchiato .gap-8{gap:2rem}html.theme--catppuccin-macchiato{background-color:#24273a;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-macchiato a{transition:all 200ms ease}html.theme--catppuccin-macchiato .label{color:#cad3f5}html.theme--catppuccin-macchiato .button,html.theme--catppuccin-macchiato .control.has-icons-left .icon,html.theme--catppuccin-macchiato .control.has-icons-right .icon,html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .pagination-ellipsis,html.theme--catppuccin-macchiato .pagination-link,html.theme--catppuccin-macchiato .pagination-next,html.theme--catppuccin-macchiato .pagination-previous,html.theme--catppuccin-macchiato .select,html.theme--catppuccin-macchiato .select select,html.theme--catppuccin-macchiato .textarea{height:2.5em;color:#cad3f5}html.theme--catppuccin-macchiato .input,html.theme--catppuccin-macchiato #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-macchiato .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#cad3f5}html.theme--catppuccin-macchiato .select:after,html.theme--catppuccin-macchiato .select select{border-width:1px}html.theme--catppuccin-macchiato .menu-list a{transition:all 300ms ease}html.theme--catppuccin-macchiato .modal-card-foot,html.theme--catppuccin-macchiato .modal-card-head{border-color:#5b6078}html.theme--catppuccin-macchiato .navbar{border-radius:.4em}html.theme--catppuccin-macchiato .navbar.is-transparent{background:none}html.theme--catppuccin-macchiato .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-macchiato .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#8aadf4}@media screen and (max-width: 1055px){html.theme--catppuccin-macchiato .navbar .navbar-menu{background-color:#8aadf4;border-radius:0 0 .4em .4em}}html.theme--catppuccin-macchiato .docstring>section>a.docs-sourcelink:not(body){color:#363a4f}html.theme--catppuccin-macchiato .tag.is-link:not(body),html.theme--catppuccin-macchiato .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-macchiato .content kbd.is-link:not(body){color:#363a4f}html.theme--catppuccin-macchiato .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-macchiato .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-macchiato .ansi span.sgr3{font-style:italic}html.theme--catppuccin-macchiato .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-macchiato .ansi span.sgr7{color:#24273a;background-color:#cad3f5}html.theme--catppuccin-macchiato .ansi span.sgr8{color:transparent}html.theme--catppuccin-macchiato .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-macchiato .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-macchiato .ansi span.sgr30{color:#494d64}html.theme--catppuccin-macchiato .ansi span.sgr31{color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr32{color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr33{color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr34{color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr35{color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr36{color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr37{color:#b8c0e0}html.theme--catppuccin-macchiato .ansi span.sgr40{background-color:#494d64}html.theme--catppuccin-macchiato .ansi span.sgr41{background-color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr42{background-color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr43{background-color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr44{background-color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr45{background-color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr46{background-color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr47{background-color:#b8c0e0}html.theme--catppuccin-macchiato .ansi span.sgr90{color:#5b6078}html.theme--catppuccin-macchiato .ansi span.sgr91{color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr92{color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr93{color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr94{color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr95{color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr96{color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr97{color:#a5adcb}html.theme--catppuccin-macchiato .ansi span.sgr100{background-color:#5b6078}html.theme--catppuccin-macchiato .ansi span.sgr101{background-color:#ed8796}html.theme--catppuccin-macchiato .ansi span.sgr102{background-color:#a6da95}html.theme--catppuccin-macchiato .ansi span.sgr103{background-color:#eed49f}html.theme--catppuccin-macchiato .ansi span.sgr104{background-color:#8aadf4}html.theme--catppuccin-macchiato .ansi span.sgr105{background-color:#f5bde6}html.theme--catppuccin-macchiato .ansi span.sgr106{background-color:#8bd5ca}html.theme--catppuccin-macchiato .ansi span.sgr107{background-color:#a5adcb}html.theme--catppuccin-macchiato code.language-julia-repl>span.hljs-meta{color:#a6da95;font-weight:bolder}html.theme--catppuccin-macchiato code .hljs{color:#cad3f5;background:#24273a}html.theme--catppuccin-macchiato code .hljs-keyword{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-built_in{color:#ed8796}html.theme--catppuccin-macchiato code .hljs-type{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-literal{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-number{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-operator{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-punctuation{color:#b8c0e0}html.theme--catppuccin-macchiato code .hljs-property{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-regexp{color:#f5bde6}html.theme--catppuccin-macchiato code .hljs-string{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-char.escape_{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-subst{color:#a5adcb}html.theme--catppuccin-macchiato code .hljs-symbol{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-variable{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-variable.language_{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-variable.constant_{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-title{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-title.class_{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-title.function_{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-params{color:#cad3f5}html.theme--catppuccin-macchiato code .hljs-comment{color:#5b6078}html.theme--catppuccin-macchiato code .hljs-doctag{color:#ed8796}html.theme--catppuccin-macchiato code .hljs-meta{color:#f5a97f}html.theme--catppuccin-macchiato code .hljs-section{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-tag{color:#a5adcb}html.theme--catppuccin-macchiato code .hljs-name{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-attr{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-attribute{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-bullet{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-code{color:#a6da95}html.theme--catppuccin-macchiato code .hljs-emphasis{color:#ed8796;font-style:italic}html.theme--catppuccin-macchiato code .hljs-strong{color:#ed8796;font-weight:bold}html.theme--catppuccin-macchiato code .hljs-formula{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-link{color:#7dc4e4;font-style:italic}html.theme--catppuccin-macchiato code .hljs-quote{color:#a6da95;font-style:italic}html.theme--catppuccin-macchiato code .hljs-selector-tag{color:#eed49f}html.theme--catppuccin-macchiato code .hljs-selector-id{color:#8aadf4}html.theme--catppuccin-macchiato code .hljs-selector-class{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-selector-attr{color:#c6a0f6}html.theme--catppuccin-macchiato code .hljs-selector-pseudo{color:#8bd5ca}html.theme--catppuccin-macchiato code .hljs-template-tag{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-template-variable{color:#f0c6c6}html.theme--catppuccin-macchiato code .hljs-addition{color:#a6da95;background:rgba(166,227,161,0.15)}html.theme--catppuccin-macchiato code .hljs-deletion{color:#ed8796;background:rgba(243,139,168,0.15)}html.theme--catppuccin-macchiato .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover,html.theme--catppuccin-macchiato .search-result-link:focus{background-color:#363a4f}html.theme--catppuccin-macchiato .search-result-link .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-macchiato .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:hover .search-filter,html.theme--catppuccin-macchiato .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-macchiato .search-result-link:focus .search-filter{color:#363a4f !important;background-color:#b7bdf8 !important}html.theme--catppuccin-macchiato .search-result-title{color:#cad3f5}html.theme--catppuccin-macchiato .search-result-highlight{background-color:#ed8796;color:#1e2030}html.theme--catppuccin-macchiato .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-macchiato .w-100{width:100%}html.theme--catppuccin-macchiato .gap-2{gap:0.5rem}html.theme--catppuccin-macchiato .gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themes/catppuccin-mocha.css b/previews/PR1200/assets/themes/catppuccin-mocha.css new file mode 100644 index 0000000000..8b82652560 --- /dev/null +++ b/previews/PR1200/assets/themes/catppuccin-mocha.css @@ -0,0 +1 @@ +html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha .file-name,html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--catppuccin-mocha .pagination-previous:focus,html.theme--catppuccin-mocha .pagination-next:focus,html.theme--catppuccin-mocha .pagination-link:focus,html.theme--catppuccin-mocha .pagination-ellipsis:focus,html.theme--catppuccin-mocha .file-cta:focus,html.theme--catppuccin-mocha .file-name:focus,html.theme--catppuccin-mocha .select select:focus,html.theme--catppuccin-mocha .textarea:focus,html.theme--catppuccin-mocha .input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-mocha .button:focus,html.theme--catppuccin-mocha .is-focused.pagination-previous,html.theme--catppuccin-mocha .is-focused.pagination-next,html.theme--catppuccin-mocha .is-focused.pagination-link,html.theme--catppuccin-mocha .is-focused.pagination-ellipsis,html.theme--catppuccin-mocha .is-focused.file-cta,html.theme--catppuccin-mocha .is-focused.file-name,html.theme--catppuccin-mocha .select select.is-focused,html.theme--catppuccin-mocha .is-focused.textarea,html.theme--catppuccin-mocha .is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-focused.button,html.theme--catppuccin-mocha .pagination-previous:active,html.theme--catppuccin-mocha .pagination-next:active,html.theme--catppuccin-mocha .pagination-link:active,html.theme--catppuccin-mocha .pagination-ellipsis:active,html.theme--catppuccin-mocha .file-cta:active,html.theme--catppuccin-mocha .file-name:active,html.theme--catppuccin-mocha .select select:active,html.theme--catppuccin-mocha .textarea:active,html.theme--catppuccin-mocha .input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-mocha .button:active,html.theme--catppuccin-mocha .is-active.pagination-previous,html.theme--catppuccin-mocha .is-active.pagination-next,html.theme--catppuccin-mocha .is-active.pagination-link,html.theme--catppuccin-mocha .is-active.pagination-ellipsis,html.theme--catppuccin-mocha .is-active.file-cta,html.theme--catppuccin-mocha .is-active.file-name,html.theme--catppuccin-mocha .select select.is-active,html.theme--catppuccin-mocha .is-active.textarea,html.theme--catppuccin-mocha .is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .is-active.button{outline:none}html.theme--catppuccin-mocha .pagination-previous[disabled],html.theme--catppuccin-mocha .pagination-next[disabled],html.theme--catppuccin-mocha .pagination-link[disabled],html.theme--catppuccin-mocha .pagination-ellipsis[disabled],html.theme--catppuccin-mocha .file-cta[disabled],html.theme--catppuccin-mocha .file-name[disabled],html.theme--catppuccin-mocha .select select[disabled],html.theme--catppuccin-mocha .textarea[disabled],html.theme--catppuccin-mocha .input[disabled],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--catppuccin-mocha .button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha fieldset[disabled] .file-cta,fieldset[disabled] html.theme--catppuccin-mocha .file-name,html.theme--catppuccin-mocha fieldset[disabled] .file-name,fieldset[disabled] html.theme--catppuccin-mocha .select select,fieldset[disabled] html.theme--catppuccin-mocha .textarea,fieldset[disabled] html.theme--catppuccin-mocha .input,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha fieldset[disabled] .select select,html.theme--catppuccin-mocha .select fieldset[disabled] select,html.theme--catppuccin-mocha fieldset[disabled] .textarea,html.theme--catppuccin-mocha fieldset[disabled] .input,html.theme--catppuccin-mocha fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--catppuccin-mocha .button,html.theme--catppuccin-mocha fieldset[disabled] .button{cursor:not-allowed}html.theme--catppuccin-mocha .tabs,html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .breadcrumb,html.theme--catppuccin-mocha .file,html.theme--catppuccin-mocha .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless)::after,html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--catppuccin-mocha .admonition:not(:last-child),html.theme--catppuccin-mocha .tabs:not(:last-child),html.theme--catppuccin-mocha .pagination:not(:last-child),html.theme--catppuccin-mocha .message:not(:last-child),html.theme--catppuccin-mocha .level:not(:last-child),html.theme--catppuccin-mocha .breadcrumb:not(:last-child),html.theme--catppuccin-mocha .block:not(:last-child),html.theme--catppuccin-mocha .title:not(:last-child),html.theme--catppuccin-mocha .subtitle:not(:last-child),html.theme--catppuccin-mocha .table-container:not(:last-child),html.theme--catppuccin-mocha .table:not(:last-child),html.theme--catppuccin-mocha .progress:not(:last-child),html.theme--catppuccin-mocha .notification:not(:last-child),html.theme--catppuccin-mocha .content:not(:last-child),html.theme--catppuccin-mocha .box:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .modal-close,html.theme--catppuccin-mocha .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--catppuccin-mocha .modal-close::before,html.theme--catppuccin-mocha .delete::before,html.theme--catppuccin-mocha .modal-close::after,html.theme--catppuccin-mocha .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-mocha .modal-close::before,html.theme--catppuccin-mocha .delete::before{height:2px;width:50%}html.theme--catppuccin-mocha .modal-close::after,html.theme--catppuccin-mocha .delete::after{height:50%;width:2px}html.theme--catppuccin-mocha .modal-close:hover,html.theme--catppuccin-mocha .delete:hover,html.theme--catppuccin-mocha .modal-close:focus,html.theme--catppuccin-mocha .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--catppuccin-mocha .modal-close:active,html.theme--catppuccin-mocha .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--catppuccin-mocha .is-small.modal-close,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--catppuccin-mocha .is-small.delete,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--catppuccin-mocha .is-medium.modal-close,html.theme--catppuccin-mocha .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--catppuccin-mocha .is-large.modal-close,html.theme--catppuccin-mocha .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--catppuccin-mocha .control.is-loading::after,html.theme--catppuccin-mocha .select.is-loading::after,html.theme--catppuccin-mocha .loader,html.theme--catppuccin-mocha .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #7f849c;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--catppuccin-mocha .hero-video,html.theme--catppuccin-mocha .modal-background,html.theme--catppuccin-mocha .modal,html.theme--catppuccin-mocha .image.is-square img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-mocha .image.is-square .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-mocha .image.is-1by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-mocha .image.is-1by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-mocha .image.is-5by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-mocha .image.is-5by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-mocha .image.is-4by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-mocha .image.is-4by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-mocha .image.is-3by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-mocha .image.is-5by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-mocha .image.is-5by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-mocha .image.is-16by9 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-mocha .image.is-16by9 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-mocha .image.is-2by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-mocha .image.is-2by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-mocha .image.is-3by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-mocha .image.is-3by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-mocha .image.is-4by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-mocha .image.is-4by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-mocha .image.is-3by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-mocha .image.is-3by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-mocha .image.is-2by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-mocha .image.is-2by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-mocha .image.is-3by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-mocha .image.is-9by16 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-mocha .image.is-9by16 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-mocha .image.is-1by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-mocha .image.is-1by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-mocha .image.is-1by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-mocha .image.is-1by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--catppuccin-mocha .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#313244 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c26 !important}.has-background-dark{background-color:#313244 !important}.has-text-primary{color:#89b4fa !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#5895f8 !important}.has-background-primary{background-color:#89b4fa !important}.has-text-primary-light{color:#ebf3fe !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#bbd3fc !important}.has-background-primary-light{background-color:#ebf3fe !important}.has-text-primary-dark{color:#063c93 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#0850c4 !important}.has-background-primary-dark{background-color:#063c93 !important}.has-text-link{color:#89b4fa !important}a.has-text-link:hover,a.has-text-link:focus{color:#5895f8 !important}.has-background-link{background-color:#89b4fa !important}.has-text-link-light{color:#ebf3fe !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#bbd3fc !important}.has-background-link-light{background-color:#ebf3fe !important}.has-text-link-dark{color:#063c93 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#0850c4 !important}.has-background-link-dark{background-color:#063c93 !important}.has-text-info{color:#94e2d5 !important}a.has-text-info:hover,a.has-text-info:focus{color:#6cd7c5 !important}.has-background-info{background-color:#94e2d5 !important}.has-text-info-light{color:#effbf9 !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c7f0e9 !important}.has-background-info-light{background-color:#effbf9 !important}.has-text-info-dark{color:#207466 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#2a9c89 !important}.has-background-info-dark{background-color:#207466 !important}.has-text-success{color:#a6e3a1 !important}a.has-text-success:hover,a.has-text-success:focus{color:#81d77a !important}.has-background-success{background-color:#a6e3a1 !important}.has-text-success-light{color:#f0faef !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#cbefc8 !important}.has-background-success-light{background-color:#f0faef !important}.has-text-success-dark{color:#287222 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#36992e !important}.has-background-success-dark{background-color:#287222 !important}.has-text-warning{color:#f9e2af !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#f5d180 !important}.has-background-warning{background-color:#f9e2af !important}.has-text-warning-light{color:#fef8ec !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fae7bd !important}.has-background-warning-light{background-color:#fef8ec !important}.has-text-warning-dark{color:#8a620a !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#b9840e !important}.has-background-warning-dark{background-color:#8a620a !important}.has-text-danger{color:#f38ba8 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee5d85 !important}.has-background-danger{background-color:#f38ba8 !important}.has-text-danger-light{color:#fdedf1 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f8bece !important}.has-background-danger-light{background-color:#fdedf1 !important}.has-text-danger-dark{color:#991036 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#c71546 !important}.has-background-danger-dark{background-color:#991036 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#313244 !important}.has-background-grey-darker{background-color:#313244 !important}.has-text-grey-dark{color:#45475a !important}.has-background-grey-dark{background-color:#45475a !important}.has-text-grey{color:#585b70 !important}.has-background-grey{background-color:#585b70 !important}.has-text-grey-light{color:#6c7086 !important}.has-background-grey-light{background-color:#6c7086 !important}.has-text-grey-lighter{color:#7f849c !important}.has-background-grey-lighter{background-color:#7f849c !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--catppuccin-mocha html{background-color:#1e1e2e;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-mocha article,html.theme--catppuccin-mocha aside,html.theme--catppuccin-mocha figure,html.theme--catppuccin-mocha footer,html.theme--catppuccin-mocha header,html.theme--catppuccin-mocha hgroup,html.theme--catppuccin-mocha section{display:block}html.theme--catppuccin-mocha body,html.theme--catppuccin-mocha button,html.theme--catppuccin-mocha input,html.theme--catppuccin-mocha optgroup,html.theme--catppuccin-mocha select,html.theme--catppuccin-mocha textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--catppuccin-mocha code,html.theme--catppuccin-mocha pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-mocha body{color:#cdd6f4;font-size:1em;font-weight:400;line-height:1.5}html.theme--catppuccin-mocha a{color:#89b4fa;cursor:pointer;text-decoration:none}html.theme--catppuccin-mocha a strong{color:currentColor}html.theme--catppuccin-mocha a:hover{color:#89dceb}html.theme--catppuccin-mocha code{background-color:#181825;color:#cdd6f4;font-size:.875em;font-weight:normal;padding:.1em}html.theme--catppuccin-mocha hr{background-color:#181825;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--catppuccin-mocha img{height:auto;max-width:100%}html.theme--catppuccin-mocha input[type="checkbox"],html.theme--catppuccin-mocha input[type="radio"]{vertical-align:baseline}html.theme--catppuccin-mocha small{font-size:.875em}html.theme--catppuccin-mocha span{font-style:inherit;font-weight:inherit}html.theme--catppuccin-mocha strong{color:#b8c5ef;font-weight:700}html.theme--catppuccin-mocha fieldset{border:none}html.theme--catppuccin-mocha pre{-webkit-overflow-scrolling:touch;background-color:#181825;color:#cdd6f4;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--catppuccin-mocha pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--catppuccin-mocha table td,html.theme--catppuccin-mocha table th{vertical-align:top}html.theme--catppuccin-mocha table td:not([align]),html.theme--catppuccin-mocha table th:not([align]){text-align:inherit}html.theme--catppuccin-mocha table th{color:#b8c5ef}html.theme--catppuccin-mocha .box{background-color:#45475a;border-radius:8px;box-shadow:none;color:#cdd6f4;display:block;padding:1.25rem}html.theme--catppuccin-mocha a.box:hover,html.theme--catppuccin-mocha a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #89b4fa}html.theme--catppuccin-mocha a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #89b4fa}html.theme--catppuccin-mocha .button{background-color:#181825;border-color:#363653;border-width:1px;color:#89b4fa;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--catppuccin-mocha .button strong{color:inherit}html.theme--catppuccin-mocha .button .icon,html.theme--catppuccin-mocha .button .icon.is-small,html.theme--catppuccin-mocha .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--catppuccin-mocha .button .icon.is-medium,html.theme--catppuccin-mocha .button .icon.is-large{height:1.5em;width:1.5em}html.theme--catppuccin-mocha .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--catppuccin-mocha .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-mocha .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--catppuccin-mocha .button:hover,html.theme--catppuccin-mocha .button.is-hovered{border-color:#6c7086;color:#b8c5ef}html.theme--catppuccin-mocha .button:focus,html.theme--catppuccin-mocha .button.is-focused{border-color:#6c7086;color:#71a4f9}html.theme--catppuccin-mocha .button:focus:not(:active),html.theme--catppuccin-mocha .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button:active,html.theme--catppuccin-mocha .button.is-active{border-color:#45475a;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text{background-color:transparent;border-color:transparent;color:#cdd6f4;text-decoration:underline}html.theme--catppuccin-mocha .button.is-text:hover,html.theme--catppuccin-mocha .button.is-text.is-hovered,html.theme--catppuccin-mocha .button.is-text:focus,html.theme--catppuccin-mocha .button.is-text.is-focused{background-color:#181825;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text:active,html.theme--catppuccin-mocha .button.is-text.is-active{background-color:#0e0e16;color:#b8c5ef}html.theme--catppuccin-mocha .button.is-text[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--catppuccin-mocha .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#89b4fa;text-decoration:none}html.theme--catppuccin-mocha .button.is-ghost:hover,html.theme--catppuccin-mocha .button.is-ghost.is-hovered{color:#89b4fa;text-decoration:underline}html.theme--catppuccin-mocha .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:hover,html.theme--catppuccin-mocha .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:focus,html.theme--catppuccin-mocha .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white:focus:not(:active),html.theme--catppuccin-mocha .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .button.is-white:active,html.theme--catppuccin-mocha .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--catppuccin-mocha .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted:hover,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--catppuccin-mocha .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-outlined:hover,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-white.is-outlined:focus,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:hover,html.theme--catppuccin-mocha .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:focus,html.theme--catppuccin-mocha .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black:focus:not(:active),html.theme--catppuccin-mocha .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .button.is-black:active,html.theme--catppuccin-mocha .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-black[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--catppuccin-mocha .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted:hover,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-outlined:hover,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-black.is-outlined:focus,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:hover,html.theme--catppuccin-mocha .button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:focus,html.theme--catppuccin-mocha .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light:focus:not(:active),html.theme--catppuccin-mocha .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .button.is-light:active,html.theme--catppuccin-mocha .button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}html.theme--catppuccin-mocha .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted:hover,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-outlined:hover,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-light.is-outlined:focus,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-dark,html.theme--catppuccin-mocha .content kbd.button{background-color:#313244;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:hover,html.theme--catppuccin-mocha .content kbd.button:hover,html.theme--catppuccin-mocha .button.is-dark.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-hovered{background-color:#2c2d3d;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:focus,html.theme--catppuccin-mocha .content kbd.button:focus,html.theme--catppuccin-mocha .button.is-dark.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark:focus:not(:active),html.theme--catppuccin-mocha .content kbd.button:focus:not(:active),html.theme--catppuccin-mocha .button.is-dark.is-focused:not(:active),html.theme--catppuccin-mocha .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .button.is-dark:active,html.theme--catppuccin-mocha .content kbd.button:active,html.theme--catppuccin-mocha .button.is-dark.is-active,html.theme--catppuccin-mocha .content kbd.button.is-active{background-color:#262735;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-dark[disabled],html.theme--catppuccin-mocha .content kbd.button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button{background-color:#313244;border-color:#313244;box-shadow:none}html.theme--catppuccin-mocha .button.is-dark.is-inverted,html.theme--catppuccin-mocha .content kbd.button.is-inverted{background-color:#fff;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted:hover,html.theme--catppuccin-mocha .content kbd.button.is-inverted:hover,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-dark.is-inverted[disabled],html.theme--catppuccin-mocha .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-inverted,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-loading::after,html.theme--catppuccin-mocha .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined,html.theme--catppuccin-mocha .content kbd.button.is-outlined{background-color:transparent;border-color:#313244;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-outlined:hover,html.theme--catppuccin-mocha .content kbd.button.is-outlined:hover,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-dark.is-outlined:focus,html.theme--catppuccin-mocha .content kbd.button.is-outlined:focus,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-focused{background-color:#313244;border-color:#313244;color:#fff}html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #313244 #313244 !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-dark.is-outlined[disabled],html.theme--catppuccin-mocha .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-outlined{background-color:transparent;border-color:#313244;box-shadow:none;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#313244}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #313244 #313244 !important}html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined[disabled],html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-primary,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:hover,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:focus,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary:focus:not(:active),html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--catppuccin-mocha .button.is-primary.is-focused:not(:active),html.theme--catppuccin-mocha .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button.is-primary:active,html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink:active,html.theme--catppuccin-mocha .button.is-primary.is-active,html.theme--catppuccin-mocha .docstring>section>a.button.is-active.docs-sourcelink{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-primary[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.docs-sourcelink{background-color:#89b4fa;border-color:#89b4fa;box-shadow:none}html.theme--catppuccin-mocha .button.is-primary.is-inverted,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-primary.is-inverted[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-inverted,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-loading::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-outlined:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-mocha .button.is-primary.is-outlined:focus,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-mocha .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-primary.is-outlined[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#89b4fa;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined[disabled],html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--catppuccin-mocha .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-primary.is-light,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .button.is-primary.is-light:hover,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--catppuccin-mocha .button.is-primary.is-light.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#dfebfe;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-primary.is-light:active,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--catppuccin-mocha .button.is-primary.is-light.is-active,html.theme--catppuccin-mocha .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d3e3fd;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-link{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:hover,html.theme--catppuccin-mocha .button.is-link.is-hovered{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:focus,html.theme--catppuccin-mocha .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link:focus:not(:active),html.theme--catppuccin-mocha .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .button.is-link:active,html.theme--catppuccin-mocha .button.is-link.is-active{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-link[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link{background-color:#89b4fa;border-color:#89b4fa;box-shadow:none}html.theme--catppuccin-mocha .button.is-link.is-inverted{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted:hover,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-link.is-outlined{background-color:transparent;border-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-outlined:hover,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-link.is-outlined:focus,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-focused{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-outlined{background-color:transparent;border-color:#89b4fa;box-shadow:none;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #89b4fa #89b4fa !important}html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-link.is-light{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .button.is-link.is-light:hover,html.theme--catppuccin-mocha .button.is-link.is-light.is-hovered{background-color:#dfebfe;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-link.is-light:active,html.theme--catppuccin-mocha .button.is-link.is-light.is-active{background-color:#d3e3fd;border-color:transparent;color:#063c93}html.theme--catppuccin-mocha .button.is-info{background-color:#94e2d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:hover,html.theme--catppuccin-mocha .button.is-info.is-hovered{background-color:#8adfd1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:focus,html.theme--catppuccin-mocha .button.is-info.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info:focus:not(:active),html.theme--catppuccin-mocha .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .button.is-info:active,html.theme--catppuccin-mocha .button.is-info.is-active{background-color:#80ddcd;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info{background-color:#94e2d5;border-color:#94e2d5;box-shadow:none}html.theme--catppuccin-mocha .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted:hover,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-info.is-outlined{background-color:transparent;border-color:#94e2d5;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-outlined:hover,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-info.is-outlined:focus,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-focused{background-color:#94e2d5;border-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #94e2d5 #94e2d5 !important}html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-outlined{background-color:transparent;border-color:#94e2d5;box-shadow:none;color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #94e2d5 #94e2d5 !important}html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-info.is-light{background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .button.is-info.is-light:hover,html.theme--catppuccin-mocha .button.is-info.is-light.is-hovered{background-color:#e5f8f5;border-color:transparent;color:#207466}html.theme--catppuccin-mocha .button.is-info.is-light:active,html.theme--catppuccin-mocha .button.is-info.is-light.is-active{background-color:#dbf5f1;border-color:transparent;color:#207466}html.theme--catppuccin-mocha .button.is-success{background-color:#a6e3a1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:hover,html.theme--catppuccin-mocha .button.is-success.is-hovered{background-color:#9de097;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:focus,html.theme--catppuccin-mocha .button.is-success.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success:focus:not(:active),html.theme--catppuccin-mocha .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .button.is-success:active,html.theme--catppuccin-mocha .button.is-success.is-active{background-color:#93dd8d;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success{background-color:#a6e3a1;border-color:#a6e3a1;box-shadow:none}html.theme--catppuccin-mocha .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted:hover,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-success.is-outlined{background-color:transparent;border-color:#a6e3a1;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-outlined:hover,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-success.is-outlined:focus,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-focused{background-color:#a6e3a1;border-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #a6e3a1 #a6e3a1 !important}html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-outlined{background-color:transparent;border-color:#a6e3a1;box-shadow:none;color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a6e3a1 #a6e3a1 !important}html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-success.is-light{background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .button.is-success.is-light:hover,html.theme--catppuccin-mocha .button.is-success.is-light.is-hovered{background-color:#e7f7e5;border-color:transparent;color:#287222}html.theme--catppuccin-mocha .button.is-success.is-light:active,html.theme--catppuccin-mocha .button.is-success.is-light.is-active{background-color:#def4dc;border-color:transparent;color:#287222}html.theme--catppuccin-mocha .button.is-warning{background-color:#f9e2af;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:hover,html.theme--catppuccin-mocha .button.is-warning.is-hovered{background-color:#f8dea3;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:focus,html.theme--catppuccin-mocha .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning:focus:not(:active),html.theme--catppuccin-mocha .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .button.is-warning:active,html.theme--catppuccin-mocha .button.is-warning.is-active{background-color:#f7d997;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning{background-color:#f9e2af;border-color:#f9e2af;box-shadow:none}html.theme--catppuccin-mocha .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted:hover,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined{background-color:transparent;border-color:#f9e2af;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-outlined:hover,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-warning.is-outlined:focus,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-focused{background-color:#f9e2af;border-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #f9e2af #f9e2af !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--catppuccin-mocha .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-outlined{background-color:transparent;border-color:#f9e2af;box-shadow:none;color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f9e2af #f9e2af !important}html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .button.is-warning.is-light{background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .button.is-warning.is-light:hover,html.theme--catppuccin-mocha .button.is-warning.is-light.is-hovered{background-color:#fdf4e0;border-color:transparent;color:#8a620a}html.theme--catppuccin-mocha .button.is-warning.is-light:active,html.theme--catppuccin-mocha .button.is-warning.is-light.is-active{background-color:#fcf0d4;border-color:transparent;color:#8a620a}html.theme--catppuccin-mocha .button.is-danger{background-color:#f38ba8;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:hover,html.theme--catppuccin-mocha .button.is-danger.is-hovered{background-color:#f27f9f;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:focus,html.theme--catppuccin-mocha .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger:focus:not(:active),html.theme--catppuccin-mocha .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .button.is-danger:active,html.theme--catppuccin-mocha .button.is-danger.is-active{background-color:#f17497;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .button.is-danger[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger{background-color:#f38ba8;border-color:#f38ba8;box-shadow:none}html.theme--catppuccin-mocha .button.is-danger.is-inverted{background-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted:hover,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--catppuccin-mocha .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined{background-color:transparent;border-color:#f38ba8;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-outlined:hover,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-danger.is-outlined:focus,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-focused{background-color:#f38ba8;border-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f38ba8 #f38ba8 !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--catppuccin-mocha .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-outlined{background-color:transparent;border-color:#f38ba8;box-shadow:none;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined:hover,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined:focus,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f38ba8 #f38ba8 !important}html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--catppuccin-mocha .button.is-danger.is-light{background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .button.is-danger.is-light:hover,html.theme--catppuccin-mocha .button.is-danger.is-light.is-hovered{background-color:#fce1e8;border-color:transparent;color:#991036}html.theme--catppuccin-mocha .button.is-danger.is-light:active,html.theme--catppuccin-mocha .button.is-danger.is-light.is-active{background-color:#fbd5e0;border-color:transparent;color:#991036}html.theme--catppuccin-mocha .button.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--catppuccin-mocha .button.is-small:not(.is-rounded),html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--catppuccin-mocha .button.is-normal{font-size:1rem}html.theme--catppuccin-mocha .button.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .button.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .button[disabled],fieldset[disabled] html.theme--catppuccin-mocha .button{background-color:#6c7086;border-color:#585b70;box-shadow:none;opacity:.5}html.theme--catppuccin-mocha .button.is-fullwidth{display:flex;width:100%}html.theme--catppuccin-mocha .button.is-loading{color:transparent !important;pointer-events:none}html.theme--catppuccin-mocha .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--catppuccin-mocha .button.is-static{background-color:#181825;border-color:#585b70;color:#7f849c;box-shadow:none;pointer-events:none}html.theme--catppuccin-mocha .button.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--catppuccin-mocha .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .buttons .button{margin-bottom:0.5rem}html.theme--catppuccin-mocha .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--catppuccin-mocha .buttons:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-mocha .buttons:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-mocha .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--catppuccin-mocha .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--catppuccin-mocha .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--catppuccin-mocha .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--catppuccin-mocha .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--catppuccin-mocha .buttons.has-addons .button:last-child{margin-right:0}html.theme--catppuccin-mocha .buttons.has-addons .button:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-hovered{z-index:2}html.theme--catppuccin-mocha .buttons.has-addons .button:focus,html.theme--catppuccin-mocha .buttons.has-addons .button.is-focused,html.theme--catppuccin-mocha .buttons.has-addons .button:active,html.theme--catppuccin-mocha .buttons.has-addons .button.is-active,html.theme--catppuccin-mocha .buttons.has-addons .button.is-selected{z-index:3}html.theme--catppuccin-mocha .buttons.has-addons .button:focus:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-focused:hover,html.theme--catppuccin-mocha .buttons.has-addons .button:active:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-active:hover,html.theme--catppuccin-mocha .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--catppuccin-mocha .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .buttons.is-centered{justify-content:center}html.theme--catppuccin-mocha .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--catppuccin-mocha .buttons.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .button.is-responsive.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--catppuccin-mocha .button.is-responsive,html.theme--catppuccin-mocha .button.is-responsive.is-normal{font-size:.65625rem}html.theme--catppuccin-mocha .button.is-responsive.is-medium{font-size:.75rem}html.theme--catppuccin-mocha .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .button.is-responsive.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--catppuccin-mocha .button.is-responsive,html.theme--catppuccin-mocha .button.is-responsive.is-normal{font-size:.75rem}html.theme--catppuccin-mocha .button.is-responsive.is-medium{font-size:1rem}html.theme--catppuccin-mocha .button.is-responsive.is-large{font-size:1.25rem}}html.theme--catppuccin-mocha .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--catppuccin-mocha .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--catppuccin-mocha .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--catppuccin-mocha .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--catppuccin-mocha .content li+li{margin-top:0.25em}html.theme--catppuccin-mocha .content p:not(:last-child),html.theme--catppuccin-mocha .content dl:not(:last-child),html.theme--catppuccin-mocha .content ol:not(:last-child),html.theme--catppuccin-mocha .content ul:not(:last-child),html.theme--catppuccin-mocha .content blockquote:not(:last-child),html.theme--catppuccin-mocha .content pre:not(:last-child),html.theme--catppuccin-mocha .content table:not(:last-child){margin-bottom:1em}html.theme--catppuccin-mocha .content h1,html.theme--catppuccin-mocha .content h2,html.theme--catppuccin-mocha .content h3,html.theme--catppuccin-mocha .content h4,html.theme--catppuccin-mocha .content h5,html.theme--catppuccin-mocha .content h6{color:#cdd6f4;font-weight:600;line-height:1.125}html.theme--catppuccin-mocha .content h1{font-size:2em;margin-bottom:0.5em}html.theme--catppuccin-mocha .content h1:not(:first-child){margin-top:1em}html.theme--catppuccin-mocha .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--catppuccin-mocha .content h2:not(:first-child){margin-top:1.1428em}html.theme--catppuccin-mocha .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--catppuccin-mocha .content h3:not(:first-child){margin-top:1.3333em}html.theme--catppuccin-mocha .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--catppuccin-mocha .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--catppuccin-mocha .content h6{font-size:1em;margin-bottom:1em}html.theme--catppuccin-mocha .content blockquote{background-color:#181825;border-left:5px solid #585b70;padding:1.25em 1.5em}html.theme--catppuccin-mocha .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-mocha .content ol:not([type]){list-style-type:decimal}html.theme--catppuccin-mocha .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--catppuccin-mocha .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--catppuccin-mocha .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--catppuccin-mocha .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--catppuccin-mocha .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--catppuccin-mocha .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--catppuccin-mocha .content ul ul ul{list-style-type:square}html.theme--catppuccin-mocha .content dd{margin-left:2em}html.theme--catppuccin-mocha .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--catppuccin-mocha .content figure:not(:first-child){margin-top:2em}html.theme--catppuccin-mocha .content figure:not(:last-child){margin-bottom:2em}html.theme--catppuccin-mocha .content figure img{display:inline-block}html.theme--catppuccin-mocha .content figure figcaption{font-style:italic}html.theme--catppuccin-mocha .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--catppuccin-mocha .content sup,html.theme--catppuccin-mocha .content sub{font-size:75%}html.theme--catppuccin-mocha .content table{width:100%}html.theme--catppuccin-mocha .content table td,html.theme--catppuccin-mocha .content table th{border:1px solid #585b70;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-mocha .content table th{color:#b8c5ef}html.theme--catppuccin-mocha .content table th:not([align]){text-align:inherit}html.theme--catppuccin-mocha .content table thead td,html.theme--catppuccin-mocha .content table thead th{border-width:0 0 2px;color:#b8c5ef}html.theme--catppuccin-mocha .content table tfoot td,html.theme--catppuccin-mocha .content table tfoot th{border-width:2px 0 0;color:#b8c5ef}html.theme--catppuccin-mocha .content table tbody tr:last-child td,html.theme--catppuccin-mocha .content table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-mocha .content .tabs li+li{margin-top:0}html.theme--catppuccin-mocha .content.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--catppuccin-mocha .content.is-normal{font-size:1rem}html.theme--catppuccin-mocha .content.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .content.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--catppuccin-mocha .icon.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--catppuccin-mocha .icon.is-medium{height:2rem;width:2rem}html.theme--catppuccin-mocha .icon.is-large{height:3rem;width:3rem}html.theme--catppuccin-mocha .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--catppuccin-mocha .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--catppuccin-mocha .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--catppuccin-mocha div.icon-text{display:flex}html.theme--catppuccin-mocha .image,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--catppuccin-mocha .image img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--catppuccin-mocha .image img.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--catppuccin-mocha .image.is-fullwidth,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--catppuccin-mocha .image.is-square img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--catppuccin-mocha .image.is-square .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--catppuccin-mocha .image.is-1by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--catppuccin-mocha .image.is-1by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--catppuccin-mocha .image.is-5by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--catppuccin-mocha .image.is-5by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--catppuccin-mocha .image.is-4by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--catppuccin-mocha .image.is-4by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--catppuccin-mocha .image.is-3by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--catppuccin-mocha .image.is-5by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--catppuccin-mocha .image.is-5by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--catppuccin-mocha .image.is-16by9 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--catppuccin-mocha .image.is-16by9 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--catppuccin-mocha .image.is-2by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--catppuccin-mocha .image.is-2by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--catppuccin-mocha .image.is-3by1 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--catppuccin-mocha .image.is-3by1 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--catppuccin-mocha .image.is-4by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--catppuccin-mocha .image.is-4by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--catppuccin-mocha .image.is-3by4 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--catppuccin-mocha .image.is-3by4 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--catppuccin-mocha .image.is-2by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--catppuccin-mocha .image.is-2by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--catppuccin-mocha .image.is-3by5 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--catppuccin-mocha .image.is-3by5 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--catppuccin-mocha .image.is-9by16 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--catppuccin-mocha .image.is-9by16 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--catppuccin-mocha .image.is-1by2 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--catppuccin-mocha .image.is-1by2 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--catppuccin-mocha .image.is-1by3 img,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--catppuccin-mocha .image.is-1by3 .has-ratio,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--catppuccin-mocha .image.is-square,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--catppuccin-mocha .image.is-1by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--catppuccin-mocha .image.is-5by4,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--catppuccin-mocha .image.is-4by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--catppuccin-mocha .image.is-3by2,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--catppuccin-mocha .image.is-5by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--catppuccin-mocha .image.is-16by9,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--catppuccin-mocha .image.is-2by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--catppuccin-mocha .image.is-3by1,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--catppuccin-mocha .image.is-4by5,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--catppuccin-mocha .image.is-3by4,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--catppuccin-mocha .image.is-2by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--catppuccin-mocha .image.is-3by5,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--catppuccin-mocha .image.is-9by16,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--catppuccin-mocha .image.is-1by2,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--catppuccin-mocha .image.is-1by3,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--catppuccin-mocha .image.is-16x16,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--catppuccin-mocha .image.is-24x24,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--catppuccin-mocha .image.is-32x32,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--catppuccin-mocha .image.is-48x48,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--catppuccin-mocha .image.is-64x64,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--catppuccin-mocha .image.is-96x96,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--catppuccin-mocha .image.is-128x128,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--catppuccin-mocha .notification{background-color:#181825;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--catppuccin-mocha .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-mocha .notification strong{color:currentColor}html.theme--catppuccin-mocha .notification code,html.theme--catppuccin-mocha .notification pre{background:#fff}html.theme--catppuccin-mocha .notification pre code{background:transparent}html.theme--catppuccin-mocha .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--catppuccin-mocha .notification .title,html.theme--catppuccin-mocha .notification .subtitle,html.theme--catppuccin-mocha .notification .content{color:currentColor}html.theme--catppuccin-mocha .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-dark,html.theme--catppuccin-mocha .content kbd.notification{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .notification.is-primary,html.theme--catppuccin-mocha .docstring>section>a.notification.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .notification.is-primary.is-light,html.theme--catppuccin-mocha .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .notification.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .notification.is-link.is-light{background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .notification.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-info.is-light{background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .notification.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-success.is-light{background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .notification.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .notification.is-warning.is-light{background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .notification.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .notification.is-danger.is-light{background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--catppuccin-mocha .progress::-webkit-progress-bar{background-color:#45475a}html.theme--catppuccin-mocha .progress::-webkit-progress-value{background-color:#7f849c}html.theme--catppuccin-mocha .progress::-moz-progress-bar{background-color:#7f849c}html.theme--catppuccin-mocha .progress::-ms-fill{background-color:#7f849c;border:none}html.theme--catppuccin-mocha .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white::-ms-fill{background-color:#fff}html.theme--catppuccin-mocha .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--catppuccin-mocha .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-light::-webkit-progress-value{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light::-moz-progress-bar{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light::-ms-fill{background-color:#f5f5f5}html.theme--catppuccin-mocha .progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-dark::-webkit-progress-value,html.theme--catppuccin-mocha .content kbd.progress::-webkit-progress-value{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark::-moz-progress-bar,html.theme--catppuccin-mocha .content kbd.progress::-moz-progress-bar{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark::-ms-fill,html.theme--catppuccin-mocha .content kbd.progress::-ms-fill{background-color:#313244}html.theme--catppuccin-mocha .progress.is-dark:indeterminate,html.theme--catppuccin-mocha .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #313244 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-primary::-webkit-progress-value,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary::-moz-progress-bar,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary::-ms-fill,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-primary:indeterminate,html.theme--catppuccin-mocha .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #89b4fa 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-link::-webkit-progress-value{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link::-moz-progress-bar{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link::-ms-fill{background-color:#89b4fa}html.theme--catppuccin-mocha .progress.is-link:indeterminate{background-image:linear-gradient(to right, #89b4fa 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-info::-webkit-progress-value{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info::-moz-progress-bar{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info::-ms-fill{background-color:#94e2d5}html.theme--catppuccin-mocha .progress.is-info:indeterminate{background-image:linear-gradient(to right, #94e2d5 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-success::-webkit-progress-value{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success::-moz-progress-bar{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success::-ms-fill{background-color:#a6e3a1}html.theme--catppuccin-mocha .progress.is-success:indeterminate{background-image:linear-gradient(to right, #a6e3a1 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-warning::-webkit-progress-value{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning::-moz-progress-bar{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning::-ms-fill{background-color:#f9e2af}html.theme--catppuccin-mocha .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #f9e2af 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress.is-danger::-webkit-progress-value{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger::-moz-progress-bar{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger::-ms-fill{background-color:#f38ba8}html.theme--catppuccin-mocha .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f38ba8 30%, #45475a 30%)}html.theme--catppuccin-mocha .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#45475a;background-image:linear-gradient(to right, #cdd6f4 30%, #45475a 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--catppuccin-mocha .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--catppuccin-mocha .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--catppuccin-mocha .progress:indeterminate::-ms-fill{animation-name:none}html.theme--catppuccin-mocha .progress.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--catppuccin-mocha .progress.is-medium{height:1.25rem}html.theme--catppuccin-mocha .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--catppuccin-mocha .table{background-color:#45475a;color:#cdd6f4}html.theme--catppuccin-mocha .table td,html.theme--catppuccin-mocha .table th{border:1px solid #585b70;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--catppuccin-mocha .table td.is-white,html.theme--catppuccin-mocha .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .table td.is-black,html.theme--catppuccin-mocha .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .table td.is-light,html.theme--catppuccin-mocha .table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-dark,html.theme--catppuccin-mocha .table th.is-dark{background-color:#313244;border-color:#313244;color:#fff}html.theme--catppuccin-mocha .table td.is-primary,html.theme--catppuccin-mocha .table th.is-primary{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-link,html.theme--catppuccin-mocha .table th.is-link{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-info,html.theme--catppuccin-mocha .table th.is-info{background-color:#94e2d5;border-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-success,html.theme--catppuccin-mocha .table th.is-success{background-color:#a6e3a1;border-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-warning,html.theme--catppuccin-mocha .table th.is-warning{background-color:#f9e2af;border-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .table td.is-danger,html.theme--catppuccin-mocha .table th.is-danger{background-color:#f38ba8;border-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .table td.is-narrow,html.theme--catppuccin-mocha .table th.is-narrow{white-space:nowrap;width:1%}html.theme--catppuccin-mocha .table td.is-selected,html.theme--catppuccin-mocha .table th.is-selected{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table td.is-selected a,html.theme--catppuccin-mocha .table td.is-selected strong,html.theme--catppuccin-mocha .table th.is-selected a,html.theme--catppuccin-mocha .table th.is-selected strong{color:currentColor}html.theme--catppuccin-mocha .table td.is-vcentered,html.theme--catppuccin-mocha .table th.is-vcentered{vertical-align:middle}html.theme--catppuccin-mocha .table th{color:#b8c5ef}html.theme--catppuccin-mocha .table th:not([align]){text-align:left}html.theme--catppuccin-mocha .table tr.is-selected{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .table tr.is-selected a,html.theme--catppuccin-mocha .table tr.is-selected strong{color:currentColor}html.theme--catppuccin-mocha .table tr.is-selected td,html.theme--catppuccin-mocha .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--catppuccin-mocha .table thead{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table thead td,html.theme--catppuccin-mocha .table thead th{border-width:0 0 2px;color:#b8c5ef}html.theme--catppuccin-mocha .table tfoot{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table tfoot td,html.theme--catppuccin-mocha .table tfoot th{border-width:2px 0 0;color:#b8c5ef}html.theme--catppuccin-mocha .table tbody{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .table tbody tr:last-child td,html.theme--catppuccin-mocha .table tbody tr:last-child th{border-bottom-width:0}html.theme--catppuccin-mocha .table.is-bordered td,html.theme--catppuccin-mocha .table.is-bordered th{border-width:1px}html.theme--catppuccin-mocha .table.is-bordered tr:last-child td,html.theme--catppuccin-mocha .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--catppuccin-mocha .table.is-fullwidth{width:100%}html.theme--catppuccin-mocha .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#313244}html.theme--catppuccin-mocha .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#313244}html.theme--catppuccin-mocha .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#35364a}html.theme--catppuccin-mocha .table.is-narrow td,html.theme--catppuccin-mocha .table.is-narrow th{padding:0.25em 0.5em}html.theme--catppuccin-mocha .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#313244}html.theme--catppuccin-mocha .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--catppuccin-mocha .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .tags .tag,html.theme--catppuccin-mocha .tags .content kbd,html.theme--catppuccin-mocha .content .tags kbd,html.theme--catppuccin-mocha .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--catppuccin-mocha .tags .tag:not(:last-child),html.theme--catppuccin-mocha .tags .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags kbd:not(:last-child),html.theme--catppuccin-mocha .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--catppuccin-mocha .tags:last-child{margin-bottom:-0.5rem}html.theme--catppuccin-mocha .tags:not(:last-child){margin-bottom:1rem}html.theme--catppuccin-mocha .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--catppuccin-mocha .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--catppuccin-mocha .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--catppuccin-mocha .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--catppuccin-mocha .tags.is-centered{justify-content:center}html.theme--catppuccin-mocha .tags.is-centered .tag,html.theme--catppuccin-mocha .tags.is-centered .content kbd,html.theme--catppuccin-mocha .content .tags.is-centered kbd,html.theme--catppuccin-mocha .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--catppuccin-mocha .tags.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .tags.is-right .tag:not(:first-child),html.theme--catppuccin-mocha .tags.is-right .content kbd:not(:first-child),html.theme--catppuccin-mocha .content .tags.is-right kbd:not(:first-child),html.theme--catppuccin-mocha .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--catppuccin-mocha .tags.is-right .tag:not(:last-child),html.theme--catppuccin-mocha .tags.is-right .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags.is-right kbd:not(:last-child),html.theme--catppuccin-mocha .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--catppuccin-mocha .tags.has-addons .tag,html.theme--catppuccin-mocha .tags.has-addons .content kbd,html.theme--catppuccin-mocha .content .tags.has-addons kbd,html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--catppuccin-mocha .tags.has-addons .tag:not(:first-child),html.theme--catppuccin-mocha .tags.has-addons .content kbd:not(:first-child),html.theme--catppuccin-mocha .content .tags.has-addons kbd:not(:first-child),html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--catppuccin-mocha .tags.has-addons .tag:not(:last-child),html.theme--catppuccin-mocha .tags.has-addons .content kbd:not(:last-child),html.theme--catppuccin-mocha .content .tags.has-addons kbd:not(:last-child),html.theme--catppuccin-mocha .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--catppuccin-mocha .tag:not(body),html.theme--catppuccin-mocha .content kbd:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#181825;border-radius:.4em;color:#cdd6f4;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--catppuccin-mocha .tag:not(body) .delete,html.theme--catppuccin-mocha .content kbd:not(body) .delete,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--catppuccin-mocha .tag.is-white:not(body),html.theme--catppuccin-mocha .content kbd.is-white:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .tag.is-black:not(body),html.theme--catppuccin-mocha .content kbd.is-black:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .tag.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-dark:not(body),html.theme--catppuccin-mocha .content kbd:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--catppuccin-mocha .content .docstring>section>kbd:not(body){background-color:#313244;color:#fff}html.theme--catppuccin-mocha .tag.is-primary:not(body),html.theme--catppuccin-mocha .content kbd.is-primary:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .tag.is-primary.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-primary.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .tag.is-link:not(body),html.theme--catppuccin-mocha .content kbd.is-link:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .tag.is-link.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-link.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#ebf3fe;color:#063c93}html.theme--catppuccin-mocha .tag.is-info:not(body),html.theme--catppuccin-mocha .content kbd.is-info:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-info.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-info.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#effbf9;color:#207466}html.theme--catppuccin-mocha .tag.is-success:not(body),html.theme--catppuccin-mocha .content kbd.is-success:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-success.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-success.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#f0faef;color:#287222}html.theme--catppuccin-mocha .tag.is-warning:not(body),html.theme--catppuccin-mocha .content kbd.is-warning:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .tag.is-warning.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-warning.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fef8ec;color:#8a620a}html.theme--catppuccin-mocha .tag.is-danger:not(body),html.theme--catppuccin-mocha .content kbd.is-danger:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .tag.is-danger.is-light:not(body),html.theme--catppuccin-mocha .content kbd.is-danger.is-light:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fdedf1;color:#991036}html.theme--catppuccin-mocha .tag.is-normal:not(body),html.theme--catppuccin-mocha .content kbd.is-normal:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--catppuccin-mocha .tag.is-medium:not(body),html.theme--catppuccin-mocha .content kbd.is-medium:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--catppuccin-mocha .tag.is-large:not(body),html.theme--catppuccin-mocha .content kbd.is-large:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--catppuccin-mocha .tag:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-mocha .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--catppuccin-mocha .tag:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-mocha .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--catppuccin-mocha .tag:not(body) .icon:first-child:last-child,html.theme--catppuccin-mocha .content kbd:not(body) .icon:first-child:last-child,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--catppuccin-mocha .tag.is-delete:not(body),html.theme--catppuccin-mocha .content kbd.is-delete:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--catppuccin-mocha .tag.is-delete:not(body)::before,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::before,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--catppuccin-mocha .tag.is-delete:not(body)::after,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::after,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--catppuccin-mocha .tag.is-delete:not(body)::before,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::before,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--catppuccin-mocha .tag.is-delete:not(body)::after,html.theme--catppuccin-mocha .content kbd.is-delete:not(body)::after,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--catppuccin-mocha .tag.is-delete:not(body):hover,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):hover,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--catppuccin-mocha .tag.is-delete:not(body):focus,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):focus,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#0e0e16}html.theme--catppuccin-mocha .tag.is-delete:not(body):active,html.theme--catppuccin-mocha .content kbd.is-delete:not(body):active,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#040406}html.theme--catppuccin-mocha .tag.is-rounded:not(body),html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--catppuccin-mocha .content kbd.is-rounded:not(body),html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--catppuccin-mocha a.tag:hover,html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--catppuccin-mocha .title,html.theme--catppuccin-mocha .subtitle{word-break:break-word}html.theme--catppuccin-mocha .title em,html.theme--catppuccin-mocha .title span,html.theme--catppuccin-mocha .subtitle em,html.theme--catppuccin-mocha .subtitle span{font-weight:inherit}html.theme--catppuccin-mocha .title sub,html.theme--catppuccin-mocha .subtitle sub{font-size:.75em}html.theme--catppuccin-mocha .title sup,html.theme--catppuccin-mocha .subtitle sup{font-size:.75em}html.theme--catppuccin-mocha .title .tag,html.theme--catppuccin-mocha .title .content kbd,html.theme--catppuccin-mocha .content .title kbd,html.theme--catppuccin-mocha .title .docstring>section>a.docs-sourcelink,html.theme--catppuccin-mocha .subtitle .tag,html.theme--catppuccin-mocha .subtitle .content kbd,html.theme--catppuccin-mocha .content .subtitle kbd,html.theme--catppuccin-mocha .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--catppuccin-mocha .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--catppuccin-mocha .title strong{color:inherit;font-weight:inherit}html.theme--catppuccin-mocha .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--catppuccin-mocha .title.is-1{font-size:3rem}html.theme--catppuccin-mocha .title.is-2{font-size:2.5rem}html.theme--catppuccin-mocha .title.is-3{font-size:2rem}html.theme--catppuccin-mocha .title.is-4{font-size:1.5rem}html.theme--catppuccin-mocha .title.is-5{font-size:1.25rem}html.theme--catppuccin-mocha .title.is-6{font-size:1rem}html.theme--catppuccin-mocha .title.is-7{font-size:.75rem}html.theme--catppuccin-mocha .subtitle{color:#6c7086;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--catppuccin-mocha .subtitle strong{color:#6c7086;font-weight:600}html.theme--catppuccin-mocha .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--catppuccin-mocha .subtitle.is-1{font-size:3rem}html.theme--catppuccin-mocha .subtitle.is-2{font-size:2.5rem}html.theme--catppuccin-mocha .subtitle.is-3{font-size:2rem}html.theme--catppuccin-mocha .subtitle.is-4{font-size:1.5rem}html.theme--catppuccin-mocha .subtitle.is-5{font-size:1.25rem}html.theme--catppuccin-mocha .subtitle.is-6{font-size:1rem}html.theme--catppuccin-mocha .subtitle.is-7{font-size:.75rem}html.theme--catppuccin-mocha .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--catppuccin-mocha .number{align-items:center;background-color:#181825;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{background-color:#1e1e2e;border-color:#585b70;border-radius:.4em;color:#7f849c}html.theme--catppuccin-mocha .select select::-moz-placeholder,html.theme--catppuccin-mocha .textarea::-moz-placeholder,html.theme--catppuccin-mocha .input::-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select::-webkit-input-placeholder,html.theme--catppuccin-mocha .textarea::-webkit-input-placeholder,html.theme--catppuccin-mocha .input::-webkit-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:-moz-placeholder,html.theme--catppuccin-mocha .textarea:-moz-placeholder,html.theme--catppuccin-mocha .input:-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:-ms-input-placeholder,html.theme--catppuccin-mocha .textarea:-ms-input-placeholder,html.theme--catppuccin-mocha .input:-ms-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--catppuccin-mocha .select select:hover,html.theme--catppuccin-mocha .textarea:hover,html.theme--catppuccin-mocha .input:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:hover,html.theme--catppuccin-mocha .select select.is-hovered,html.theme--catppuccin-mocha .is-hovered.textarea,html.theme--catppuccin-mocha .is-hovered.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#6c7086}html.theme--catppuccin-mocha .select select:focus,html.theme--catppuccin-mocha .textarea:focus,html.theme--catppuccin-mocha .input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:focus,html.theme--catppuccin-mocha .select select.is-focused,html.theme--catppuccin-mocha .is-focused.textarea,html.theme--catppuccin-mocha .is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .select select:active,html.theme--catppuccin-mocha .textarea:active,html.theme--catppuccin-mocha .input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:active,html.theme--catppuccin-mocha .select select.is-active,html.theme--catppuccin-mocha .is-active.textarea,html.theme--catppuccin-mocha .is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#89b4fa;box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select select[disabled],html.theme--catppuccin-mocha .textarea[disabled],html.theme--catppuccin-mocha .input[disabled],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--catppuccin-mocha .select select,fieldset[disabled] html.theme--catppuccin-mocha .textarea,fieldset[disabled] html.theme--catppuccin-mocha .input,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{background-color:#6c7086;border-color:#181825;box-shadow:none;color:#f7f8fd}html.theme--catppuccin-mocha .select select[disabled]::-moz-placeholder,html.theme--catppuccin-mocha .textarea[disabled]::-moz-placeholder,html.theme--catppuccin-mocha .input[disabled]::-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input::-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha .textarea[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha .input[disabled]::-webkit-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input::-webkit-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]:-moz-placeholder,html.theme--catppuccin-mocha .textarea[disabled]:-moz-placeholder,html.theme--catppuccin-mocha .input[disabled]:-moz-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input:-moz-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .select select[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha .textarea[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha .input[disabled]:-ms-input-placeholder,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .select select:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha .input:-ms-input-placeholder,fieldset[disabled] html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(247,248,253,0.3)}html.theme--catppuccin-mocha .textarea,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--catppuccin-mocha .textarea[readonly],html.theme--catppuccin-mocha .input[readonly],html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--catppuccin-mocha .is-white.textarea,html.theme--catppuccin-mocha .is-white.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--catppuccin-mocha .is-white.textarea:focus,html.theme--catppuccin-mocha .is-white.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--catppuccin-mocha .is-white.is-focused.textarea,html.theme--catppuccin-mocha .is-white.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-white.textarea:active,html.theme--catppuccin-mocha .is-white.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--catppuccin-mocha .is-white.is-active.textarea,html.theme--catppuccin-mocha .is-white.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .is-black.textarea,html.theme--catppuccin-mocha .is-black.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--catppuccin-mocha .is-black.textarea:focus,html.theme--catppuccin-mocha .is-black.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--catppuccin-mocha .is-black.is-focused.textarea,html.theme--catppuccin-mocha .is-black.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-black.textarea:active,html.theme--catppuccin-mocha .is-black.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--catppuccin-mocha .is-black.is-active.textarea,html.theme--catppuccin-mocha .is-black.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .is-light.textarea,html.theme--catppuccin-mocha .is-light.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}html.theme--catppuccin-mocha .is-light.textarea:focus,html.theme--catppuccin-mocha .is-light.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--catppuccin-mocha .is-light.is-focused.textarea,html.theme--catppuccin-mocha .is-light.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-light.textarea:active,html.theme--catppuccin-mocha .is-light.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--catppuccin-mocha .is-light.is-active.textarea,html.theme--catppuccin-mocha .is-light.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .is-dark.textarea,html.theme--catppuccin-mocha .content kbd.textarea,html.theme--catppuccin-mocha .is-dark.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--catppuccin-mocha .content kbd.input{border-color:#313244}html.theme--catppuccin-mocha .is-dark.textarea:focus,html.theme--catppuccin-mocha .content kbd.textarea:focus,html.theme--catppuccin-mocha .is-dark.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--catppuccin-mocha .content kbd.input:focus,html.theme--catppuccin-mocha .is-dark.is-focused.textarea,html.theme--catppuccin-mocha .content kbd.is-focused.textarea,html.theme--catppuccin-mocha .is-dark.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .content kbd.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-dark.textarea:active,html.theme--catppuccin-mocha .content kbd.textarea:active,html.theme--catppuccin-mocha .is-dark.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--catppuccin-mocha .content kbd.input:active,html.theme--catppuccin-mocha .is-dark.is-active.textarea,html.theme--catppuccin-mocha .content kbd.is-active.textarea,html.theme--catppuccin-mocha .is-dark.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .content kbd.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .is-primary.textarea,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink{border-color:#89b4fa}html.theme--catppuccin-mocha .is-primary.textarea:focus,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--catppuccin-mocha .is-primary.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink:focus,html.theme--catppuccin-mocha .is-primary.is-focused.textarea,html.theme--catppuccin-mocha .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.textarea:active,html.theme--catppuccin-mocha .docstring>section>a.textarea.docs-sourcelink:active,html.theme--catppuccin-mocha .is-primary.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--catppuccin-mocha .docstring>section>a.input.docs-sourcelink:active,html.theme--catppuccin-mocha .is-primary.is-active.textarea,html.theme--catppuccin-mocha .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--catppuccin-mocha .is-primary.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--catppuccin-mocha .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .is-link.textarea,html.theme--catppuccin-mocha .is-link.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#89b4fa}html.theme--catppuccin-mocha .is-link.textarea:focus,html.theme--catppuccin-mocha .is-link.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--catppuccin-mocha .is-link.is-focused.textarea,html.theme--catppuccin-mocha .is-link.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-link.textarea:active,html.theme--catppuccin-mocha .is-link.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--catppuccin-mocha .is-link.is-active.textarea,html.theme--catppuccin-mocha .is-link.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .is-info.textarea,html.theme--catppuccin-mocha .is-info.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#94e2d5}html.theme--catppuccin-mocha .is-info.textarea:focus,html.theme--catppuccin-mocha .is-info.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--catppuccin-mocha .is-info.is-focused.textarea,html.theme--catppuccin-mocha .is-info.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-info.textarea:active,html.theme--catppuccin-mocha .is-info.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--catppuccin-mocha .is-info.is-active.textarea,html.theme--catppuccin-mocha .is-info.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .is-success.textarea,html.theme--catppuccin-mocha .is-success.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#a6e3a1}html.theme--catppuccin-mocha .is-success.textarea:focus,html.theme--catppuccin-mocha .is-success.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--catppuccin-mocha .is-success.is-focused.textarea,html.theme--catppuccin-mocha .is-success.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-success.textarea:active,html.theme--catppuccin-mocha .is-success.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--catppuccin-mocha .is-success.is-active.textarea,html.theme--catppuccin-mocha .is-success.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .is-warning.textarea,html.theme--catppuccin-mocha .is-warning.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#f9e2af}html.theme--catppuccin-mocha .is-warning.textarea:focus,html.theme--catppuccin-mocha .is-warning.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--catppuccin-mocha .is-warning.is-focused.textarea,html.theme--catppuccin-mocha .is-warning.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-warning.textarea:active,html.theme--catppuccin-mocha .is-warning.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--catppuccin-mocha .is-warning.is-active.textarea,html.theme--catppuccin-mocha .is-warning.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .is-danger.textarea,html.theme--catppuccin-mocha .is-danger.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#f38ba8}html.theme--catppuccin-mocha .is-danger.textarea:focus,html.theme--catppuccin-mocha .is-danger.input:focus,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--catppuccin-mocha .is-danger.is-focused.textarea,html.theme--catppuccin-mocha .is-danger.is-focused.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--catppuccin-mocha .is-danger.textarea:active,html.theme--catppuccin-mocha .is-danger.input:active,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--catppuccin-mocha .is-danger.is-active.textarea,html.theme--catppuccin-mocha .is-danger.is-active.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .is-small.textarea,html.theme--catppuccin-mocha .is-small.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--catppuccin-mocha .is-medium.textarea,html.theme--catppuccin-mocha .is-medium.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .is-large.textarea,html.theme--catppuccin-mocha .is-large.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .is-fullwidth.textarea,html.theme--catppuccin-mocha .is-fullwidth.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--catppuccin-mocha .is-inline.textarea,html.theme--catppuccin-mocha .is-inline.input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--catppuccin-mocha .input.is-rounded,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--catppuccin-mocha .input.is-static,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--catppuccin-mocha .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--catppuccin-mocha .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--catppuccin-mocha .textarea[rows]{height:initial}html.theme--catppuccin-mocha .textarea.has-fixed-size{resize:none}html.theme--catppuccin-mocha .radio,html.theme--catppuccin-mocha .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--catppuccin-mocha .radio input,html.theme--catppuccin-mocha .checkbox input{cursor:pointer}html.theme--catppuccin-mocha .radio:hover,html.theme--catppuccin-mocha .checkbox:hover{color:#89dceb}html.theme--catppuccin-mocha .radio[disabled],html.theme--catppuccin-mocha .checkbox[disabled],fieldset[disabled] html.theme--catppuccin-mocha .radio,fieldset[disabled] html.theme--catppuccin-mocha .checkbox,html.theme--catppuccin-mocha .radio input[disabled],html.theme--catppuccin-mocha .checkbox input[disabled]{color:#f7f8fd;cursor:not-allowed}html.theme--catppuccin-mocha .radio+.radio{margin-left:.5em}html.theme--catppuccin-mocha .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--catppuccin-mocha .select:not(.is-multiple){height:2.5em}html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading)::after{border-color:#89b4fa;right:1.125em;z-index:4}html.theme--catppuccin-mocha .select.is-rounded select,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--catppuccin-mocha .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--catppuccin-mocha .select select::-ms-expand{display:none}html.theme--catppuccin-mocha .select select[disabled]:hover,fieldset[disabled] html.theme--catppuccin-mocha .select select:hover{border-color:#181825}html.theme--catppuccin-mocha .select select:not([multiple]){padding-right:2.5em}html.theme--catppuccin-mocha .select select[multiple]{height:auto;padding:0}html.theme--catppuccin-mocha .select select[multiple] option{padding:0.5em 1em}html.theme--catppuccin-mocha .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#89dceb}html.theme--catppuccin-mocha .select.is-white:not(:hover)::after{border-color:#fff}html.theme--catppuccin-mocha .select.is-white select{border-color:#fff}html.theme--catppuccin-mocha .select.is-white select:hover,html.theme--catppuccin-mocha .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--catppuccin-mocha .select.is-white select:focus,html.theme--catppuccin-mocha .select.is-white select.is-focused,html.theme--catppuccin-mocha .select.is-white select:active,html.theme--catppuccin-mocha .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--catppuccin-mocha .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .select.is-black select{border-color:#0a0a0a}html.theme--catppuccin-mocha .select.is-black select:hover,html.theme--catppuccin-mocha .select.is-black select.is-hovered{border-color:#000}html.theme--catppuccin-mocha .select.is-black select:focus,html.theme--catppuccin-mocha .select.is-black select.is-focused,html.theme--catppuccin-mocha .select.is-black select:active,html.theme--catppuccin-mocha .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--catppuccin-mocha .select.is-light:not(:hover)::after{border-color:#f5f5f5}html.theme--catppuccin-mocha .select.is-light select{border-color:#f5f5f5}html.theme--catppuccin-mocha .select.is-light select:hover,html.theme--catppuccin-mocha .select.is-light select.is-hovered{border-color:#e8e8e8}html.theme--catppuccin-mocha .select.is-light select:focus,html.theme--catppuccin-mocha .select.is-light select.is-focused,html.theme--catppuccin-mocha .select.is-light select:active,html.theme--catppuccin-mocha .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}html.theme--catppuccin-mocha .select.is-dark:not(:hover)::after,html.theme--catppuccin-mocha .content kbd.select:not(:hover)::after{border-color:#313244}html.theme--catppuccin-mocha .select.is-dark select,html.theme--catppuccin-mocha .content kbd.select select{border-color:#313244}html.theme--catppuccin-mocha .select.is-dark select:hover,html.theme--catppuccin-mocha .content kbd.select select:hover,html.theme--catppuccin-mocha .select.is-dark select.is-hovered,html.theme--catppuccin-mocha .content kbd.select select.is-hovered{border-color:#262735}html.theme--catppuccin-mocha .select.is-dark select:focus,html.theme--catppuccin-mocha .content kbd.select select:focus,html.theme--catppuccin-mocha .select.is-dark select.is-focused,html.theme--catppuccin-mocha .content kbd.select select.is-focused,html.theme--catppuccin-mocha .select.is-dark select:active,html.theme--catppuccin-mocha .content kbd.select select:active,html.theme--catppuccin-mocha .select.is-dark select.is-active,html.theme--catppuccin-mocha .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(49,50,68,0.25)}html.theme--catppuccin-mocha .select.is-primary:not(:hover)::after,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-primary select,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-primary select:hover,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:hover,html.theme--catppuccin-mocha .select.is-primary select.is-hovered,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#71a4f9}html.theme--catppuccin-mocha .select.is-primary select:focus,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:focus,html.theme--catppuccin-mocha .select.is-primary select.is-focused,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--catppuccin-mocha .select.is-primary select:active,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select:active,html.theme--catppuccin-mocha .select.is-primary select.is-active,html.theme--catppuccin-mocha .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select.is-link:not(:hover)::after{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-link select{border-color:#89b4fa}html.theme--catppuccin-mocha .select.is-link select:hover,html.theme--catppuccin-mocha .select.is-link select.is-hovered{border-color:#71a4f9}html.theme--catppuccin-mocha .select.is-link select:focus,html.theme--catppuccin-mocha .select.is-link select.is-focused,html.theme--catppuccin-mocha .select.is-link select:active,html.theme--catppuccin-mocha .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(137,180,250,0.25)}html.theme--catppuccin-mocha .select.is-info:not(:hover)::after{border-color:#94e2d5}html.theme--catppuccin-mocha .select.is-info select{border-color:#94e2d5}html.theme--catppuccin-mocha .select.is-info select:hover,html.theme--catppuccin-mocha .select.is-info select.is-hovered{border-color:#80ddcd}html.theme--catppuccin-mocha .select.is-info select:focus,html.theme--catppuccin-mocha .select.is-info select.is-focused,html.theme--catppuccin-mocha .select.is-info select:active,html.theme--catppuccin-mocha .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(148,226,213,0.25)}html.theme--catppuccin-mocha .select.is-success:not(:hover)::after{border-color:#a6e3a1}html.theme--catppuccin-mocha .select.is-success select{border-color:#a6e3a1}html.theme--catppuccin-mocha .select.is-success select:hover,html.theme--catppuccin-mocha .select.is-success select.is-hovered{border-color:#93dd8d}html.theme--catppuccin-mocha .select.is-success select:focus,html.theme--catppuccin-mocha .select.is-success select.is-focused,html.theme--catppuccin-mocha .select.is-success select:active,html.theme--catppuccin-mocha .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(166,227,161,0.25)}html.theme--catppuccin-mocha .select.is-warning:not(:hover)::after{border-color:#f9e2af}html.theme--catppuccin-mocha .select.is-warning select{border-color:#f9e2af}html.theme--catppuccin-mocha .select.is-warning select:hover,html.theme--catppuccin-mocha .select.is-warning select.is-hovered{border-color:#f7d997}html.theme--catppuccin-mocha .select.is-warning select:focus,html.theme--catppuccin-mocha .select.is-warning select.is-focused,html.theme--catppuccin-mocha .select.is-warning select:active,html.theme--catppuccin-mocha .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(249,226,175,0.25)}html.theme--catppuccin-mocha .select.is-danger:not(:hover)::after{border-color:#f38ba8}html.theme--catppuccin-mocha .select.is-danger select{border-color:#f38ba8}html.theme--catppuccin-mocha .select.is-danger select:hover,html.theme--catppuccin-mocha .select.is-danger select.is-hovered{border-color:#f17497}html.theme--catppuccin-mocha .select.is-danger select:focus,html.theme--catppuccin-mocha .select.is-danger select.is-focused,html.theme--catppuccin-mocha .select.is-danger select:active,html.theme--catppuccin-mocha .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(243,139,168,0.25)}html.theme--catppuccin-mocha .select.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--catppuccin-mocha .select.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .select.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .select.is-disabled::after{border-color:#f7f8fd !important;opacity:0.5}html.theme--catppuccin-mocha .select.is-fullwidth{width:100%}html.theme--catppuccin-mocha .select.is-fullwidth select{width:100%}html.theme--catppuccin-mocha .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--catppuccin-mocha .select.is-loading.is-small:after,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-mocha .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-mocha .select.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-mocha .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--catppuccin-mocha .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:hover .file-cta,html.theme--catppuccin-mocha .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:focus .file-cta,html.theme--catppuccin-mocha .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--catppuccin-mocha .file.is-white:active .file-cta,html.theme--catppuccin-mocha .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--catppuccin-mocha .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-black:hover .file-cta,html.theme--catppuccin-mocha .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-black:focus .file-cta,html.theme--catppuccin-mocha .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-black:active .file-cta,html.theme--catppuccin-mocha .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:hover .file-cta,html.theme--catppuccin-mocha .file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:focus .file-cta,html.theme--catppuccin-mocha .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-light:active .file-cta,html.theme--catppuccin-mocha .file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-dark .file-cta,html.theme--catppuccin-mocha .content kbd.file .file-cta{background-color:#313244;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-dark:hover .file-cta,html.theme--catppuccin-mocha .content kbd.file:hover .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-hovered .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-hovered .file-cta{background-color:#2c2d3d;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-dark:focus .file-cta,html.theme--catppuccin-mocha .content kbd.file:focus .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-focused .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(49,50,68,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-dark:active .file-cta,html.theme--catppuccin-mocha .content kbd.file:active .file-cta,html.theme--catppuccin-mocha .file.is-dark.is-active .file-cta,html.theme--catppuccin-mocha .content kbd.file.is-active .file-cta{background-color:#262735;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary:hover .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-hovered .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-primary:focus .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-focused .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(137,180,250,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-primary:active .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--catppuccin-mocha .file.is-primary.is-active .file-cta,html.theme--catppuccin-mocha .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link .file-cta{background-color:#89b4fa;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link:hover .file-cta,html.theme--catppuccin-mocha .file.is-link.is-hovered .file-cta{background-color:#7dacf9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-link:focus .file-cta,html.theme--catppuccin-mocha .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(137,180,250,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-link:active .file-cta,html.theme--catppuccin-mocha .file.is-link.is-active .file-cta{background-color:#71a4f9;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-info .file-cta{background-color:#94e2d5;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:hover .file-cta,html.theme--catppuccin-mocha .file.is-info.is-hovered .file-cta{background-color:#8adfd1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:focus .file-cta,html.theme--catppuccin-mocha .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(148,226,213,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-info:active .file-cta,html.theme--catppuccin-mocha .file.is-info.is-active .file-cta{background-color:#80ddcd;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success .file-cta{background-color:#a6e3a1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:hover .file-cta,html.theme--catppuccin-mocha .file.is-success.is-hovered .file-cta{background-color:#9de097;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:focus .file-cta,html.theme--catppuccin-mocha .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(166,227,161,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-success:active .file-cta,html.theme--catppuccin-mocha .file.is-success.is-active .file-cta{background-color:#93dd8d;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning .file-cta{background-color:#f9e2af;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:hover .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-hovered .file-cta{background-color:#f8dea3;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:focus .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(249,226,175,0.25);color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-warning:active .file-cta,html.theme--catppuccin-mocha .file.is-warning.is-active .file-cta{background-color:#f7d997;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .file.is-danger .file-cta{background-color:#f38ba8;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-danger:hover .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-hovered .file-cta{background-color:#f27f9f;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-danger:focus .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(243,139,168,0.25);color:#fff}html.theme--catppuccin-mocha .file.is-danger:active .file-cta,html.theme--catppuccin-mocha .file.is-danger.is-active .file-cta{background-color:#f17497;border-color:transparent;color:#fff}html.theme--catppuccin-mocha .file.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--catppuccin-mocha .file.is-normal{font-size:1rem}html.theme--catppuccin-mocha .file.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .file.is-medium .file-icon .fa{font-size:21px}html.theme--catppuccin-mocha .file.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .file.is-large .file-icon .fa{font-size:28px}html.theme--catppuccin-mocha .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--catppuccin-mocha .file.has-name.is-empty .file-name{display:none}html.theme--catppuccin-mocha .file.is-boxed .file-label{flex-direction:column}html.theme--catppuccin-mocha .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--catppuccin-mocha .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--catppuccin-mocha .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--catppuccin-mocha .file.is-boxed .file-icon .fa{font-size:21px}html.theme--catppuccin-mocha .file.is-boxed.is-small .file-icon .fa,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--catppuccin-mocha .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--catppuccin-mocha .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--catppuccin-mocha .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--catppuccin-mocha .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--catppuccin-mocha .file.is-centered{justify-content:center}html.theme--catppuccin-mocha .file.is-fullwidth .file-label{width:100%}html.theme--catppuccin-mocha .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--catppuccin-mocha .file.is-right{justify-content:flex-end}html.theme--catppuccin-mocha .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--catppuccin-mocha .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--catppuccin-mocha .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--catppuccin-mocha .file-label:hover .file-cta{background-color:#2c2d3d;color:#b8c5ef}html.theme--catppuccin-mocha .file-label:hover .file-name{border-color:#525569}html.theme--catppuccin-mocha .file-label:active .file-cta{background-color:#262735;color:#b8c5ef}html.theme--catppuccin-mocha .file-label:active .file-name{border-color:#4d4f62}html.theme--catppuccin-mocha .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--catppuccin-mocha .file-cta,html.theme--catppuccin-mocha .file-name{border-color:#585b70;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--catppuccin-mocha .file-cta{background-color:#313244;color:#cdd6f4}html.theme--catppuccin-mocha .file-name{border-color:#585b70;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--catppuccin-mocha .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--catppuccin-mocha .file-icon .fa{font-size:14px}html.theme--catppuccin-mocha .label{color:#b8c5ef;display:block;font-size:1rem;font-weight:700}html.theme--catppuccin-mocha .label:not(:last-child){margin-bottom:0.5em}html.theme--catppuccin-mocha .label.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--catppuccin-mocha .label.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .label.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--catppuccin-mocha .help.is-white{color:#fff}html.theme--catppuccin-mocha .help.is-black{color:#0a0a0a}html.theme--catppuccin-mocha .help.is-light{color:#f5f5f5}html.theme--catppuccin-mocha .help.is-dark,html.theme--catppuccin-mocha .content kbd.help{color:#313244}html.theme--catppuccin-mocha .help.is-primary,html.theme--catppuccin-mocha .docstring>section>a.help.docs-sourcelink{color:#89b4fa}html.theme--catppuccin-mocha .help.is-link{color:#89b4fa}html.theme--catppuccin-mocha .help.is-info{color:#94e2d5}html.theme--catppuccin-mocha .help.is-success{color:#a6e3a1}html.theme--catppuccin-mocha .help.is-warning{color:#f9e2af}html.theme--catppuccin-mocha .help.is-danger{color:#f38ba8}html.theme--catppuccin-mocha .field:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-mocha .field.has-addons{display:flex;justify-content:flex-start}html.theme--catppuccin-mocha .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .button,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .input,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--catppuccin-mocha .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .button.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .button.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .input.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .input.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):focus,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):active,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .button:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .input:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--catppuccin-mocha .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--catppuccin-mocha .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--catppuccin-mocha .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .field.has-addons.has-addons-centered{justify-content:center}html.theme--catppuccin-mocha .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--catppuccin-mocha .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .field.is-grouped{display:flex;justify-content:flex-start}html.theme--catppuccin-mocha .field.is-grouped>.control{flex-shrink:0}html.theme--catppuccin-mocha .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-mocha .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--catppuccin-mocha .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field.is-horizontal{display:flex}}html.theme--catppuccin-mocha .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--catppuccin-mocha .field-label.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-normal{padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--catppuccin-mocha .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--catppuccin-mocha .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--catppuccin-mocha .field-body .field{margin-bottom:0}html.theme--catppuccin-mocha .field-body>.field{flex-shrink:1}html.theme--catppuccin-mocha .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--catppuccin-mocha .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-mocha .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--catppuccin-mocha .control.has-icons-left .input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select:focus~.icon{color:#313244}html.theme--catppuccin-mocha .control.has-icons-left .input.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-small~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--catppuccin-mocha .control.has-icons-left .input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--catppuccin-mocha .control.has-icons-left .input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-left .select.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right .input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--catppuccin-mocha .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--catppuccin-mocha .control.has-icons-left .icon,html.theme--catppuccin-mocha .control.has-icons-right .icon{color:#585b70;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--catppuccin-mocha .control.has-icons-left .input,html.theme--catppuccin-mocha .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--catppuccin-mocha .control.has-icons-left .select select{padding-left:2.5em}html.theme--catppuccin-mocha .control.has-icons-left .icon.is-left{left:0}html.theme--catppuccin-mocha .control.has-icons-right .input,html.theme--catppuccin-mocha .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--catppuccin-mocha .control.has-icons-right .select select{padding-right:2.5em}html.theme--catppuccin-mocha .control.has-icons-right .icon.is-right{right:0}html.theme--catppuccin-mocha .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--catppuccin-mocha .control.is-loading.is-small:after,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--catppuccin-mocha .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--catppuccin-mocha .control.is-loading.is-large:after{font-size:1.5rem}html.theme--catppuccin-mocha .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--catppuccin-mocha .breadcrumb a{align-items:center;color:#89b4fa;display:flex;justify-content:center;padding:0 .75em}html.theme--catppuccin-mocha .breadcrumb a:hover{color:#89dceb}html.theme--catppuccin-mocha .breadcrumb li{align-items:center;display:flex}html.theme--catppuccin-mocha .breadcrumb li:first-child a{padding-left:0}html.theme--catppuccin-mocha .breadcrumb li.is-active a{color:#b8c5ef;cursor:default;pointer-events:none}html.theme--catppuccin-mocha .breadcrumb li+li::before{color:#6c7086;content:"\0002f"}html.theme--catppuccin-mocha .breadcrumb ul,html.theme--catppuccin-mocha .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--catppuccin-mocha .breadcrumb .icon:first-child{margin-right:.5em}html.theme--catppuccin-mocha .breadcrumb .icon:last-child{margin-left:.5em}html.theme--catppuccin-mocha .breadcrumb.is-centered ol,html.theme--catppuccin-mocha .breadcrumb.is-centered ul{justify-content:center}html.theme--catppuccin-mocha .breadcrumb.is-right ol,html.theme--catppuccin-mocha .breadcrumb.is-right ul{justify-content:flex-end}html.theme--catppuccin-mocha .breadcrumb.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--catppuccin-mocha .breadcrumb.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .breadcrumb.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--catppuccin-mocha .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--catppuccin-mocha .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--catppuccin-mocha .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--catppuccin-mocha .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#cdd6f4;max-width:100%;position:relative}html.theme--catppuccin-mocha .card-footer:first-child,html.theme--catppuccin-mocha .card-content:first-child,html.theme--catppuccin-mocha .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-mocha .card-footer:last-child,html.theme--catppuccin-mocha .card-content:last-child,html.theme--catppuccin-mocha .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-mocha .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--catppuccin-mocha .card-header-title{align-items:center;color:#b8c5ef;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--catppuccin-mocha .card-header-title.is-centered{justify-content:center}html.theme--catppuccin-mocha .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--catppuccin-mocha .card-image{display:block;position:relative}html.theme--catppuccin-mocha .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--catppuccin-mocha .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--catppuccin-mocha .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--catppuccin-mocha .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--catppuccin-mocha .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--catppuccin-mocha .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--catppuccin-mocha .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--catppuccin-mocha .dropdown.is-active .dropdown-menu,html.theme--catppuccin-mocha .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--catppuccin-mocha .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--catppuccin-mocha .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--catppuccin-mocha .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--catppuccin-mocha .dropdown-content{background-color:#181825;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--catppuccin-mocha .dropdown-item{color:#cdd6f4;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--catppuccin-mocha a.dropdown-item,html.theme--catppuccin-mocha button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--catppuccin-mocha a.dropdown-item:hover,html.theme--catppuccin-mocha button.dropdown-item:hover{background-color:#181825;color:#0a0a0a}html.theme--catppuccin-mocha a.dropdown-item.is-active,html.theme--catppuccin-mocha button.dropdown-item.is-active{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--catppuccin-mocha .level{align-items:center;justify-content:space-between}html.theme--catppuccin-mocha .level code{border-radius:.4em}html.theme--catppuccin-mocha .level img{display:inline-block;vertical-align:top}html.theme--catppuccin-mocha .level.is-mobile{display:flex}html.theme--catppuccin-mocha .level.is-mobile .level-left,html.theme--catppuccin-mocha .level.is-mobile .level-right{display:flex}html.theme--catppuccin-mocha .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--catppuccin-mocha .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--catppuccin-mocha .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level{display:flex}html.theme--catppuccin-mocha .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--catppuccin-mocha .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--catppuccin-mocha .level-item .title,html.theme--catppuccin-mocha .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--catppuccin-mocha .level-left,html.theme--catppuccin-mocha .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .level-left .level-item.is-flexible,html.theme--catppuccin-mocha .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-left .level-item:not(:last-child),html.theme--catppuccin-mocha .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--catppuccin-mocha .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-left{display:flex}}html.theme--catppuccin-mocha .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .level-right{display:flex}}html.theme--catppuccin-mocha .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--catppuccin-mocha .media .content:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-mocha .media .media{border-top:1px solid rgba(88,91,112,0.5);display:flex;padding-top:.75rem}html.theme--catppuccin-mocha .media .media .content:not(:last-child),html.theme--catppuccin-mocha .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--catppuccin-mocha .media .media .media{padding-top:.5rem}html.theme--catppuccin-mocha .media .media .media+.media{margin-top:.5rem}html.theme--catppuccin-mocha .media+.media{border-top:1px solid rgba(88,91,112,0.5);margin-top:1rem;padding-top:1rem}html.theme--catppuccin-mocha .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--catppuccin-mocha .media-left,html.theme--catppuccin-mocha .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .media-left{margin-right:1rem}html.theme--catppuccin-mocha .media-right{margin-left:1rem}html.theme--catppuccin-mocha .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .media-content{overflow-x:auto}}html.theme--catppuccin-mocha .menu{font-size:1rem}html.theme--catppuccin-mocha .menu.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--catppuccin-mocha .menu.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .menu.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .menu-list{line-height:1.25}html.theme--catppuccin-mocha .menu-list a{border-radius:3px;color:#cdd6f4;display:block;padding:0.5em 0.75em}html.theme--catppuccin-mocha .menu-list a:hover{background-color:#181825;color:#b8c5ef}html.theme--catppuccin-mocha .menu-list a.is-active{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .menu-list li ul{border-left:1px solid #585b70;margin:.75em;padding-left:.75em}html.theme--catppuccin-mocha .menu-label{color:#f7f8fd;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--catppuccin-mocha .menu-label:not(:first-child){margin-top:1em}html.theme--catppuccin-mocha .menu-label:not(:last-child){margin-bottom:1em}html.theme--catppuccin-mocha .message{background-color:#181825;border-radius:.4em;font-size:1rem}html.theme--catppuccin-mocha .message strong{color:currentColor}html.theme--catppuccin-mocha .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--catppuccin-mocha .message.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--catppuccin-mocha .message.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .message.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .message.is-white{background-color:#fff}html.theme--catppuccin-mocha .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .message.is-white .message-body{border-color:#fff}html.theme--catppuccin-mocha .message.is-black{background-color:#fafafa}html.theme--catppuccin-mocha .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .message.is-black .message-body{border-color:#0a0a0a}html.theme--catppuccin-mocha .message.is-light{background-color:#fafafa}html.theme--catppuccin-mocha .message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-light .message-body{border-color:#f5f5f5}html.theme--catppuccin-mocha .message.is-dark,html.theme--catppuccin-mocha .content kbd.message{background-color:#f9f9fb}html.theme--catppuccin-mocha .message.is-dark .message-header,html.theme--catppuccin-mocha .content kbd.message .message-header{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .message.is-dark .message-body,html.theme--catppuccin-mocha .content kbd.message .message-body{border-color:#313244}html.theme--catppuccin-mocha .message.is-primary,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink{background-color:#ebf3fe}html.theme--catppuccin-mocha .message.is-primary .message-header,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink .message-header{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .message.is-primary .message-body,html.theme--catppuccin-mocha .docstring>section>a.message.docs-sourcelink .message-body{border-color:#89b4fa;color:#063c93}html.theme--catppuccin-mocha .message.is-link{background-color:#ebf3fe}html.theme--catppuccin-mocha .message.is-link .message-header{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .message.is-link .message-body{border-color:#89b4fa;color:#063c93}html.theme--catppuccin-mocha .message.is-info{background-color:#effbf9}html.theme--catppuccin-mocha .message.is-info .message-header{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-info .message-body{border-color:#94e2d5;color:#207466}html.theme--catppuccin-mocha .message.is-success{background-color:#f0faef}html.theme--catppuccin-mocha .message.is-success .message-header{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-success .message-body{border-color:#a6e3a1;color:#287222}html.theme--catppuccin-mocha .message.is-warning{background-color:#fef8ec}html.theme--catppuccin-mocha .message.is-warning .message-header{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .message.is-warning .message-body{border-color:#f9e2af;color:#8a620a}html.theme--catppuccin-mocha .message.is-danger{background-color:#fdedf1}html.theme--catppuccin-mocha .message.is-danger .message-header{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .message.is-danger .message-body{border-color:#f38ba8;color:#991036}html.theme--catppuccin-mocha .message-header{align-items:center;background-color:#cdd6f4;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--catppuccin-mocha .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--catppuccin-mocha .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--catppuccin-mocha .message-body{border-color:#585b70;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#cdd6f4;padding:1.25em 1.5em}html.theme--catppuccin-mocha .message-body code,html.theme--catppuccin-mocha .message-body pre{background-color:#fff}html.theme--catppuccin-mocha .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--catppuccin-mocha .modal.is-active{display:flex}html.theme--catppuccin-mocha .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--catppuccin-mocha .modal-content,html.theme--catppuccin-mocha .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--catppuccin-mocha .modal-content,html.theme--catppuccin-mocha .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--catppuccin-mocha .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--catppuccin-mocha .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--catppuccin-mocha .modal-card-head,html.theme--catppuccin-mocha .modal-card-foot{align-items:center;background-color:#181825;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--catppuccin-mocha .modal-card-head{border-bottom:1px solid #585b70;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--catppuccin-mocha .modal-card-title{color:#cdd6f4;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--catppuccin-mocha .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #585b70}html.theme--catppuccin-mocha .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--catppuccin-mocha .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#1e1e2e;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--catppuccin-mocha .navbar{background-color:#89b4fa;min-height:4rem;position:relative;z-index:30}html.theme--catppuccin-mocha .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-white .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--catppuccin-mocha .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-black .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--catppuccin-mocha .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--catppuccin-mocha .navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-light .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-dark,html.theme--catppuccin-mocha .content kbd.navbar{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-burger,html.theme--catppuccin-mocha .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>.navbar-item,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-dark .navbar-end .navbar-link::after,html.theme--catppuccin-mocha .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#313244;color:#fff}}html.theme--catppuccin-mocha .navbar.is-primary,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-burger,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>.navbar-item,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-primary .navbar-end .navbar-link::after,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa;color:#fff}}html.theme--catppuccin-mocha .navbar.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-link .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa;color:#fff}}html.theme--catppuccin-mocha .navbar.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-info .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-info .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#94e2d5;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-success .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-success .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#f9e2af;color:rgba(0,0,0,0.7)}}html.theme--catppuccin-mocha .navbar.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>.navbar-item,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-start .navbar-link::after,html.theme--catppuccin-mocha .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f38ba8;color:#fff}}html.theme--catppuccin-mocha .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--catppuccin-mocha .navbar.has-shadow{box-shadow:0 2px 0 0 #181825}html.theme--catppuccin-mocha .navbar.is-fixed-bottom,html.theme--catppuccin-mocha .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #181825}html.theme--catppuccin-mocha .navbar.is-fixed-top{top:0}html.theme--catppuccin-mocha html.has-navbar-fixed-top,html.theme--catppuccin-mocha body.has-navbar-fixed-top{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--catppuccin-mocha .navbar-brand,html.theme--catppuccin-mocha .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--catppuccin-mocha .navbar-brand a.navbar-item:focus,html.theme--catppuccin-mocha .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--catppuccin-mocha .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--catppuccin-mocha .navbar-burger{color:#cdd6f4;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--catppuccin-mocha .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--catppuccin-mocha .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--catppuccin-mocha .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--catppuccin-mocha .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--catppuccin-mocha .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--catppuccin-mocha .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--catppuccin-mocha .navbar-menu{display:none}html.theme--catppuccin-mocha .navbar-item,html.theme--catppuccin-mocha .navbar-link{color:#cdd6f4;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--catppuccin-mocha .navbar-item .icon:only-child,html.theme--catppuccin-mocha .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--catppuccin-mocha a.navbar-item,html.theme--catppuccin-mocha .navbar-link{cursor:pointer}html.theme--catppuccin-mocha a.navbar-item:focus,html.theme--catppuccin-mocha a.navbar-item:focus-within,html.theme--catppuccin-mocha a.navbar-item:hover,html.theme--catppuccin-mocha a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar-link:focus,html.theme--catppuccin-mocha .navbar-link:focus-within,html.theme--catppuccin-mocha .navbar-link:hover,html.theme--catppuccin-mocha .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}html.theme--catppuccin-mocha .navbar-item{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .navbar-item img{max-height:1.75rem}html.theme--catppuccin-mocha .navbar-item.has-dropdown{padding:0}html.theme--catppuccin-mocha .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--catppuccin-mocha .navbar-item.is-tab:focus,html.theme--catppuccin-mocha .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#89b4fa;border-bottom-style:solid;border-bottom-width:3px;color:#89b4fa;padding-bottom:calc(0.5rem - 3px)}html.theme--catppuccin-mocha .navbar-content{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--catppuccin-mocha .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--catppuccin-mocha .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--catppuccin-mocha .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--catppuccin-mocha .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .navbar>.container{display:block}html.theme--catppuccin-mocha .navbar-brand .navbar-item,html.theme--catppuccin-mocha .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--catppuccin-mocha .navbar-link::after{display:none}html.theme--catppuccin-mocha .navbar-menu{background-color:#89b4fa;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--catppuccin-mocha .navbar-menu.is-active{display:block}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch,html.theme--catppuccin-mocha .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .navbar.is-fixed-top-touch{top:0}html.theme--catppuccin-mocha .navbar.is-fixed-top .navbar-menu,html.theme--catppuccin-mocha .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--catppuccin-mocha html.has-navbar-fixed-top-touch,html.theme--catppuccin-mocha body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom-touch,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .navbar,html.theme--catppuccin-mocha .navbar-menu,html.theme--catppuccin-mocha .navbar-start,html.theme--catppuccin-mocha .navbar-end{align-items:stretch;display:flex}html.theme--catppuccin-mocha .navbar{min-height:4rem}html.theme--catppuccin-mocha .navbar.is-spaced{padding:1rem 2rem}html.theme--catppuccin-mocha .navbar.is-spaced .navbar-start,html.theme--catppuccin-mocha .navbar.is-spaced .navbar-end{align-items:center}html.theme--catppuccin-mocha .navbar.is-spaced a.navbar-item,html.theme--catppuccin-mocha .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item:hover,html.theme--catppuccin-mocha .navbar.is-transparent a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link:focus,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link:hover,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#7f849c}html.theme--catppuccin-mocha .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}html.theme--catppuccin-mocha .navbar-burger{display:none}html.theme--catppuccin-mocha .navbar-item,html.theme--catppuccin-mocha .navbar-link{align-items:center;display:flex}html.theme--catppuccin-mocha .navbar-item.has-dropdown{align-items:stretch}html.theme--catppuccin-mocha .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--catppuccin-mocha .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--catppuccin-mocha .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--catppuccin-mocha .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--catppuccin-mocha .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--catppuccin-mocha .navbar-dropdown{background-color:#89b4fa;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--catppuccin-mocha .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item:focus,html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#7f849c}html.theme--catppuccin-mocha .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#89b4fa}.navbar.is-spaced html.theme--catppuccin-mocha .navbar-dropdown,html.theme--catppuccin-mocha .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--catppuccin-mocha .navbar-dropdown.is-right{left:auto;right:0}html.theme--catppuccin-mocha .navbar-divider{display:block}html.theme--catppuccin-mocha .navbar>.container .navbar-brand,html.theme--catppuccin-mocha .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--catppuccin-mocha .navbar>.container .navbar-menu,html.theme--catppuccin-mocha .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop,html.theme--catppuccin-mocha .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--catppuccin-mocha .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .navbar.is-fixed-top-desktop{top:0}html.theme--catppuccin-mocha html.has-navbar-fixed-top-desktop,html.theme--catppuccin-mocha body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--catppuccin-mocha html.has-navbar-fixed-bottom-desktop,html.theme--catppuccin-mocha body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--catppuccin-mocha html.has-spaced-navbar-fixed-top,html.theme--catppuccin-mocha body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--catppuccin-mocha html.has-spaced-navbar-fixed-bottom,html.theme--catppuccin-mocha body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--catppuccin-mocha a.navbar-item.is-active,html.theme--catppuccin-mocha .navbar-link.is-active{color:#89b4fa}html.theme--catppuccin-mocha a.navbar-item.is-active:not(:focus):not(:hover),html.theme--catppuccin-mocha .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--catppuccin-mocha .navbar-item.has-dropdown:focus .navbar-link,html.theme--catppuccin-mocha .navbar-item.has-dropdown:hover .navbar-link,html.theme--catppuccin-mocha .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--catppuccin-mocha .pagination{font-size:1rem;margin:-.25rem}html.theme--catppuccin-mocha .pagination.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--catppuccin-mocha .pagination.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .pagination.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .pagination.is-rounded .pagination-previous,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--catppuccin-mocha .pagination.is-rounded .pagination-next,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--catppuccin-mocha .pagination.is-rounded .pagination-link,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--catppuccin-mocha .pagination,html.theme--catppuccin-mocha .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link{border-color:#585b70;color:#89b4fa;min-width:2.5em}html.theme--catppuccin-mocha .pagination-previous:hover,html.theme--catppuccin-mocha .pagination-next:hover,html.theme--catppuccin-mocha .pagination-link:hover{border-color:#6c7086;color:#89dceb}html.theme--catppuccin-mocha .pagination-previous:focus,html.theme--catppuccin-mocha .pagination-next:focus,html.theme--catppuccin-mocha .pagination-link:focus{border-color:#6c7086}html.theme--catppuccin-mocha .pagination-previous:active,html.theme--catppuccin-mocha .pagination-next:active,html.theme--catppuccin-mocha .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--catppuccin-mocha .pagination-previous[disabled],html.theme--catppuccin-mocha .pagination-previous.is-disabled,html.theme--catppuccin-mocha .pagination-next[disabled],html.theme--catppuccin-mocha .pagination-next.is-disabled,html.theme--catppuccin-mocha .pagination-link[disabled],html.theme--catppuccin-mocha .pagination-link.is-disabled{background-color:#585b70;border-color:#585b70;box-shadow:none;color:#f7f8fd;opacity:0.5}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--catppuccin-mocha .pagination-link.is-current{background-color:#89b4fa;border-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .pagination-ellipsis{color:#6c7086;pointer-events:none}html.theme--catppuccin-mocha .pagination-list{flex-wrap:wrap}html.theme--catppuccin-mocha .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .pagination{flex-wrap:wrap}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--catppuccin-mocha .pagination-previous{order:2}html.theme--catppuccin-mocha .pagination-next{order:3}html.theme--catppuccin-mocha .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--catppuccin-mocha .pagination.is-centered .pagination-previous{order:1}html.theme--catppuccin-mocha .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--catppuccin-mocha .pagination.is-centered .pagination-next{order:3}html.theme--catppuccin-mocha .pagination.is-right .pagination-previous{order:1}html.theme--catppuccin-mocha .pagination.is-right .pagination-next{order:2}html.theme--catppuccin-mocha .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--catppuccin-mocha .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--catppuccin-mocha .panel:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--catppuccin-mocha .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--catppuccin-mocha .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--catppuccin-mocha .panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}html.theme--catppuccin-mocha .panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}html.theme--catppuccin-mocha .panel.is-dark .panel-heading,html.theme--catppuccin-mocha .content kbd.panel .panel-heading{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .panel.is-dark .panel-tabs a.is-active,html.theme--catppuccin-mocha .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#313244}html.theme--catppuccin-mocha .panel.is-dark .panel-block.is-active .panel-icon,html.theme--catppuccin-mocha .content kbd.panel .panel-block.is-active .panel-icon{color:#313244}html.theme--catppuccin-mocha .panel.is-primary .panel-heading,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .panel.is-primary .panel-tabs a.is-active,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .panel.is-primary .panel-block.is-active .panel-icon,html.theme--catppuccin-mocha .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel.is-link .panel-heading{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .panel.is-link .panel-tabs a.is-active{border-bottom-color:#89b4fa}html.theme--catppuccin-mocha .panel.is-link .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel.is-info .panel-heading{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-info .panel-tabs a.is-active{border-bottom-color:#94e2d5}html.theme--catppuccin-mocha .panel.is-info .panel-block.is-active .panel-icon{color:#94e2d5}html.theme--catppuccin-mocha .panel.is-success .panel-heading{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-success .panel-tabs a.is-active{border-bottom-color:#a6e3a1}html.theme--catppuccin-mocha .panel.is-success .panel-block.is-active .panel-icon{color:#a6e3a1}html.theme--catppuccin-mocha .panel.is-warning .panel-heading{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#f9e2af}html.theme--catppuccin-mocha .panel.is-warning .panel-block.is-active .panel-icon{color:#f9e2af}html.theme--catppuccin-mocha .panel.is-danger .panel-heading{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f38ba8}html.theme--catppuccin-mocha .panel.is-danger .panel-block.is-active .panel-icon{color:#f38ba8}html.theme--catppuccin-mocha .panel-tabs:not(:last-child),html.theme--catppuccin-mocha .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--catppuccin-mocha .panel-heading{background-color:#45475a;border-radius:8px 8px 0 0;color:#b8c5ef;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--catppuccin-mocha .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--catppuccin-mocha .panel-tabs a{border-bottom:1px solid #585b70;margin-bottom:-1px;padding:0.5em}html.theme--catppuccin-mocha .panel-tabs a.is-active{border-bottom-color:#45475a;color:#71a4f9}html.theme--catppuccin-mocha .panel-list a{color:#cdd6f4}html.theme--catppuccin-mocha .panel-list a:hover{color:#89b4fa}html.theme--catppuccin-mocha .panel-block{align-items:center;color:#b8c5ef;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--catppuccin-mocha .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--catppuccin-mocha .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--catppuccin-mocha .panel-block.is-wrapped{flex-wrap:wrap}html.theme--catppuccin-mocha .panel-block.is-active{border-left-color:#89b4fa;color:#71a4f9}html.theme--catppuccin-mocha .panel-block.is-active .panel-icon{color:#89b4fa}html.theme--catppuccin-mocha .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--catppuccin-mocha a.panel-block,html.theme--catppuccin-mocha label.panel-block{cursor:pointer}html.theme--catppuccin-mocha a.panel-block:hover,html.theme--catppuccin-mocha label.panel-block:hover{background-color:#181825}html.theme--catppuccin-mocha .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#f7f8fd;margin-right:.75em}html.theme--catppuccin-mocha .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--catppuccin-mocha .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--catppuccin-mocha .tabs a{align-items:center;border-bottom-color:#585b70;border-bottom-style:solid;border-bottom-width:1px;color:#cdd6f4;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--catppuccin-mocha .tabs a:hover{border-bottom-color:#b8c5ef;color:#b8c5ef}html.theme--catppuccin-mocha .tabs li{display:block}html.theme--catppuccin-mocha .tabs li.is-active a{border-bottom-color:#89b4fa;color:#89b4fa}html.theme--catppuccin-mocha .tabs ul{align-items:center;border-bottom-color:#585b70;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--catppuccin-mocha .tabs ul.is-left{padding-right:0.75em}html.theme--catppuccin-mocha .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--catppuccin-mocha .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--catppuccin-mocha .tabs .icon:first-child{margin-right:.5em}html.theme--catppuccin-mocha .tabs .icon:last-child{margin-left:.5em}html.theme--catppuccin-mocha .tabs.is-centered ul{justify-content:center}html.theme--catppuccin-mocha .tabs.is-right ul{justify-content:flex-end}html.theme--catppuccin-mocha .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--catppuccin-mocha .tabs.is-boxed a:hover{background-color:#181825;border-bottom-color:#585b70}html.theme--catppuccin-mocha .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#585b70;border-bottom-color:rgba(0,0,0,0) !important}html.theme--catppuccin-mocha .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--catppuccin-mocha .tabs.is-toggle a{border-color:#585b70;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--catppuccin-mocha .tabs.is-toggle a:hover{background-color:#181825;border-color:#6c7086;z-index:2}html.theme--catppuccin-mocha .tabs.is-toggle li+li{margin-left:-1px}html.theme--catppuccin-mocha .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--catppuccin-mocha .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--catppuccin-mocha .tabs.is-toggle li.is-active a{background-color:#89b4fa;border-color:#89b4fa;color:#fff;z-index:1}html.theme--catppuccin-mocha .tabs.is-toggle ul{border-bottom:none}html.theme--catppuccin-mocha .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--catppuccin-mocha .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--catppuccin-mocha .tabs.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--catppuccin-mocha .tabs.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .tabs.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--catppuccin-mocha .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .column.is-narrow-mobile{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-mobile{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-mobile{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-mobile{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-mobile{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-mobile{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-mobile{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-mobile{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-mobile{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-mobile{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-mobile{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-mobile{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-mobile{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .column.is-narrow,html.theme--catppuccin-mocha .column.is-narrow-tablet{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full,html.theme--catppuccin-mocha .column.is-full-tablet{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters,html.theme--catppuccin-mocha .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds,html.theme--catppuccin-mocha .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half,html.theme--catppuccin-mocha .column.is-half-tablet{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third,html.theme--catppuccin-mocha .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter,html.theme--catppuccin-mocha .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth,html.theme--catppuccin-mocha .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths,html.theme--catppuccin-mocha .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths,html.theme--catppuccin-mocha .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths,html.theme--catppuccin-mocha .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters,html.theme--catppuccin-mocha .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds,html.theme--catppuccin-mocha .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half,html.theme--catppuccin-mocha .column.is-offset-half-tablet{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third,html.theme--catppuccin-mocha .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter,html.theme--catppuccin-mocha .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth,html.theme--catppuccin-mocha .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths,html.theme--catppuccin-mocha .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths,html.theme--catppuccin-mocha .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths,html.theme--catppuccin-mocha .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--catppuccin-mocha .column.is-0,html.theme--catppuccin-mocha .column.is-0-tablet{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0,html.theme--catppuccin-mocha .column.is-offset-0-tablet{margin-left:0%}html.theme--catppuccin-mocha .column.is-1,html.theme--catppuccin-mocha .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1,html.theme--catppuccin-mocha .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2,html.theme--catppuccin-mocha .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2,html.theme--catppuccin-mocha .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3,html.theme--catppuccin-mocha .column.is-3-tablet{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3,html.theme--catppuccin-mocha .column.is-offset-3-tablet{margin-left:25%}html.theme--catppuccin-mocha .column.is-4,html.theme--catppuccin-mocha .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4,html.theme--catppuccin-mocha .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5,html.theme--catppuccin-mocha .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5,html.theme--catppuccin-mocha .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6,html.theme--catppuccin-mocha .column.is-6-tablet{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6,html.theme--catppuccin-mocha .column.is-offset-6-tablet{margin-left:50%}html.theme--catppuccin-mocha .column.is-7,html.theme--catppuccin-mocha .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7,html.theme--catppuccin-mocha .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8,html.theme--catppuccin-mocha .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8,html.theme--catppuccin-mocha .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9,html.theme--catppuccin-mocha .column.is-9-tablet{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9,html.theme--catppuccin-mocha .column.is-offset-9-tablet{margin-left:75%}html.theme--catppuccin-mocha .column.is-10,html.theme--catppuccin-mocha .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10,html.theme--catppuccin-mocha .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11,html.theme--catppuccin-mocha .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11,html.theme--catppuccin-mocha .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12,html.theme--catppuccin-mocha .column.is-12-tablet{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12,html.theme--catppuccin-mocha .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .column.is-narrow-touch{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-touch{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-touch{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-touch{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-touch{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-touch{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-touch{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-touch{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-touch{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-touch{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-touch{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-touch{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-touch{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-touch{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-touch{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-touch{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-touch{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-touch{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-touch{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-touch{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-touch{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-touch{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-touch{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-touch{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-touch{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-touch{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-touch{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .column.is-narrow-desktop{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-desktop{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-desktop{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-desktop{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-desktop{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-desktop{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-desktop{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-desktop{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-desktop{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-desktop{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-desktop{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-desktop{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-desktop{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .column.is-narrow-widescreen{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-widescreen{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-widescreen{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-widescreen{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-widescreen{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-widescreen{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-widescreen{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-widescreen{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-widescreen{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-widescreen{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-widescreen{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-widescreen{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-widescreen{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .column.is-narrow-fullhd{flex:none;width:unset}html.theme--catppuccin-mocha .column.is-full-fullhd{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--catppuccin-mocha .column.is-half-fullhd{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--catppuccin-mocha .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--catppuccin-mocha .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--catppuccin-mocha .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--catppuccin-mocha .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--catppuccin-mocha .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--catppuccin-mocha .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--catppuccin-mocha .column.is-offset-half-fullhd{margin-left:50%}html.theme--catppuccin-mocha .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--catppuccin-mocha .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--catppuccin-mocha .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--catppuccin-mocha .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--catppuccin-mocha .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--catppuccin-mocha .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--catppuccin-mocha .column.is-0-fullhd{flex:none;width:0%}html.theme--catppuccin-mocha .column.is-offset-0-fullhd{margin-left:0%}html.theme--catppuccin-mocha .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--catppuccin-mocha .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--catppuccin-mocha .column.is-3-fullhd{flex:none;width:25%}html.theme--catppuccin-mocha .column.is-offset-3-fullhd{margin-left:25%}html.theme--catppuccin-mocha .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--catppuccin-mocha .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--catppuccin-mocha .column.is-6-fullhd{flex:none;width:50%}html.theme--catppuccin-mocha .column.is-offset-6-fullhd{margin-left:50%}html.theme--catppuccin-mocha .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--catppuccin-mocha .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--catppuccin-mocha .column.is-9-fullhd{flex:none;width:75%}html.theme--catppuccin-mocha .column.is-offset-9-fullhd{margin-left:75%}html.theme--catppuccin-mocha .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--catppuccin-mocha .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--catppuccin-mocha .column.is-12-fullhd{flex:none;width:100%}html.theme--catppuccin-mocha .column.is-offset-12-fullhd{margin-left:100%}}html.theme--catppuccin-mocha .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-mocha .columns:last-child{margin-bottom:-.75rem}html.theme--catppuccin-mocha .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--catppuccin-mocha .columns.is-centered{justify-content:center}html.theme--catppuccin-mocha .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--catppuccin-mocha .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--catppuccin-mocha .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--catppuccin-mocha .columns.is-gapless:last-child{margin-bottom:0}html.theme--catppuccin-mocha .columns.is-mobile{display:flex}html.theme--catppuccin-mocha .columns.is-multiline{flex-wrap:wrap}html.theme--catppuccin-mocha .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-desktop{display:flex}}html.theme--catppuccin-mocha .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--catppuccin-mocha .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--catppuccin-mocha .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--catppuccin-mocha .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--catppuccin-mocha .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--catppuccin-mocha .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--catppuccin-mocha .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--catppuccin-mocha .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--catppuccin-mocha .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--catppuccin-mocha .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--catppuccin-mocha .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--catppuccin-mocha .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--catppuccin-mocha .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--catppuccin-mocha .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--catppuccin-mocha .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--catppuccin-mocha .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--catppuccin-mocha .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--catppuccin-mocha .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--catppuccin-mocha .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--catppuccin-mocha .tile.is-child{margin:0 !important}html.theme--catppuccin-mocha .tile.is-parent{padding:.75rem}html.theme--catppuccin-mocha .tile.is-vertical{flex-direction:column}html.theme--catppuccin-mocha .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .tile:not(.is-child){display:flex}html.theme--catppuccin-mocha .tile.is-1{flex:none;width:8.33333337%}html.theme--catppuccin-mocha .tile.is-2{flex:none;width:16.66666674%}html.theme--catppuccin-mocha .tile.is-3{flex:none;width:25%}html.theme--catppuccin-mocha .tile.is-4{flex:none;width:33.33333337%}html.theme--catppuccin-mocha .tile.is-5{flex:none;width:41.66666674%}html.theme--catppuccin-mocha .tile.is-6{flex:none;width:50%}html.theme--catppuccin-mocha .tile.is-7{flex:none;width:58.33333337%}html.theme--catppuccin-mocha .tile.is-8{flex:none;width:66.66666674%}html.theme--catppuccin-mocha .tile.is-9{flex:none;width:75%}html.theme--catppuccin-mocha .tile.is-10{flex:none;width:83.33333337%}html.theme--catppuccin-mocha .tile.is-11{flex:none;width:91.66666674%}html.theme--catppuccin-mocha .tile.is-12{flex:none;width:100%}}html.theme--catppuccin-mocha .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--catppuccin-mocha .hero .navbar{background:none}html.theme--catppuccin-mocha .hero .tabs ul{border-bottom:none}html.theme--catppuccin-mocha .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-white strong{color:inherit}html.theme--catppuccin-mocha .hero.is-white .title{color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--catppuccin-mocha .hero.is-white .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-white .navbar-menu{background-color:#fff}}html.theme--catppuccin-mocha .hero.is-white .navbar-item,html.theme--catppuccin-mocha .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--catppuccin-mocha .hero.is-white a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-white a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-white .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--catppuccin-mocha .hero.is-white .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--catppuccin-mocha .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--catppuccin-mocha .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-black strong{color:inherit}html.theme--catppuccin-mocha .hero.is-black .title{color:#fff}html.theme--catppuccin-mocha .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-black .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--catppuccin-mocha .hero.is-black .navbar-item,html.theme--catppuccin-mocha .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-black a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-black a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-black .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--catppuccin-mocha .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-black .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--catppuccin-mocha .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--catppuccin-mocha .hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-light strong{color:inherit}html.theme--catppuccin-mocha .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-light .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-light .navbar-menu{background-color:#f5f5f5}}html.theme--catppuccin-mocha .hero.is-light .navbar-item,html.theme--catppuccin-mocha .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-light a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-light .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-light .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}html.theme--catppuccin-mocha .hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}html.theme--catppuccin-mocha .hero.is-dark,html.theme--catppuccin-mocha .content kbd.hero{background-color:#313244;color:#fff}html.theme--catppuccin-mocha .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-dark strong,html.theme--catppuccin-mocha .content kbd.hero strong{color:inherit}html.theme--catppuccin-mocha .hero.is-dark .title,html.theme--catppuccin-mocha .content kbd.hero .title{color:#fff}html.theme--catppuccin-mocha .hero.is-dark .subtitle,html.theme--catppuccin-mocha .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-dark .subtitle a:not(.button),html.theme--catppuccin-mocha .content kbd.hero .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-dark .subtitle strong,html.theme--catppuccin-mocha .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-dark .navbar-menu,html.theme--catppuccin-mocha .content kbd.hero .navbar-menu{background-color:#313244}}html.theme--catppuccin-mocha .hero.is-dark .navbar-item,html.theme--catppuccin-mocha .content kbd.hero .navbar-item,html.theme--catppuccin-mocha .hero.is-dark .navbar-link,html.theme--catppuccin-mocha .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-dark a.navbar-item:hover,html.theme--catppuccin-mocha .content kbd.hero a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-dark a.navbar-item.is-active,html.theme--catppuccin-mocha .content kbd.hero a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-dark .navbar-link:hover,html.theme--catppuccin-mocha .content kbd.hero .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-dark .navbar-link.is-active,html.theme--catppuccin-mocha .content kbd.hero .navbar-link.is-active{background-color:#262735;color:#fff}html.theme--catppuccin-mocha .hero.is-dark .tabs a,html.theme--catppuccin-mocha .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-dark .tabs a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-dark .tabs li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs li.is-active a{color:#313244 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle a:hover,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#313244}html.theme--catppuccin-mocha .hero.is-dark.is-bold,html.theme--catppuccin-mocha .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #181c2a 0%, #313244 71%, #3c3856 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-dark.is-bold .navbar-menu,html.theme--catppuccin-mocha .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #181c2a 0%, #313244 71%, #3c3856 100%)}}html.theme--catppuccin-mocha .hero.is-primary,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-primary strong,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--catppuccin-mocha .hero.is-primary .title,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--catppuccin-mocha .hero.is-primary .subtitle,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-primary .subtitle a:not(.button),html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-primary .subtitle strong,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-primary .navbar-menu,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#89b4fa}}html.theme--catppuccin-mocha .hero.is-primary .navbar-item,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--catppuccin-mocha .hero.is-primary .navbar-link,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-primary a.navbar-item:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-primary a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-primary .navbar-link:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-primary .navbar-link.is-active,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .hero.is-primary .tabs a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-primary .tabs a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-primary .tabs li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#89b4fa !important;opacity:1}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle a:hover,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .hero.is-primary.is-bold,html.theme--catppuccin-mocha .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-primary.is-bold .navbar-menu,html.theme--catppuccin-mocha .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}}html.theme--catppuccin-mocha .hero.is-link{background-color:#89b4fa;color:#fff}html.theme--catppuccin-mocha .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-link strong{color:inherit}html.theme--catppuccin-mocha .hero.is-link .title{color:#fff}html.theme--catppuccin-mocha .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-link .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-link .navbar-menu{background-color:#89b4fa}}html.theme--catppuccin-mocha .hero.is-link .navbar-item,html.theme--catppuccin-mocha .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-link a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-link a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-link .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-link .navbar-link.is-active{background-color:#71a4f9;color:#fff}html.theme--catppuccin-mocha .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-link .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-link .tabs li.is-active a{color:#89b4fa !important;opacity:1}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#89b4fa}html.theme--catppuccin-mocha .hero.is-link.is-bold{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #51b0ff 0%, #89b4fa 71%, #9fb3fd 100%)}}html.theme--catppuccin-mocha .hero.is-info{background-color:#94e2d5;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-info strong{color:inherit}html.theme--catppuccin-mocha .hero.is-info .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-info .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-info .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-info .navbar-menu{background-color:#94e2d5}}html.theme--catppuccin-mocha .hero.is-info .navbar-item,html.theme--catppuccin-mocha .hero.is-info .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-info a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-info .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-info .navbar-link.is-active{background-color:#80ddcd;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-info .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-info .tabs li.is-active a{color:#94e2d5 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#94e2d5}html.theme--catppuccin-mocha .hero.is-info.is-bold{background-image:linear-gradient(141deg, #63e0b6 0%, #94e2d5 71%, #a5eaea 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #63e0b6 0%, #94e2d5 71%, #a5eaea 100%)}}html.theme--catppuccin-mocha .hero.is-success{background-color:#a6e3a1;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-success strong{color:inherit}html.theme--catppuccin-mocha .hero.is-success .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-success .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-success .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-success .navbar-menu{background-color:#a6e3a1}}html.theme--catppuccin-mocha .hero.is-success .navbar-item,html.theme--catppuccin-mocha .hero.is-success .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-success a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-success .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-success .navbar-link.is-active{background-color:#93dd8d;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-success .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-success .tabs li.is-active a{color:#a6e3a1 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#a6e3a1}html.theme--catppuccin-mocha .hero.is-success.is-bold{background-image:linear-gradient(141deg, #8ce071 0%, #a6e3a1 71%, #b2ebb7 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #8ce071 0%, #a6e3a1 71%, #b2ebb7 100%)}}html.theme--catppuccin-mocha .hero.is-warning{background-color:#f9e2af;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-warning strong{color:inherit}html.theme--catppuccin-mocha .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--catppuccin-mocha .hero.is-warning .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-warning .navbar-menu{background-color:#f9e2af}}html.theme--catppuccin-mocha .hero.is-warning .navbar-item,html.theme--catppuccin-mocha .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-warning a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-warning .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-warning .navbar-link.is-active{background-color:#f7d997;color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--catppuccin-mocha .hero.is-warning .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-warning .tabs li.is-active a{color:#f9e2af !important;opacity:1}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f9e2af}html.theme--catppuccin-mocha .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #fcbd79 0%, #f9e2af 71%, #fcf4c5 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fcbd79 0%, #f9e2af 71%, #fcf4c5 100%)}}html.theme--catppuccin-mocha .hero.is-danger{background-color:#f38ba8;color:#fff}html.theme--catppuccin-mocha .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--catppuccin-mocha .hero.is-danger strong{color:inherit}html.theme--catppuccin-mocha .hero.is-danger .title{color:#fff}html.theme--catppuccin-mocha .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--catppuccin-mocha .hero.is-danger .subtitle a:not(.button),html.theme--catppuccin-mocha .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .hero.is-danger .navbar-menu{background-color:#f38ba8}}html.theme--catppuccin-mocha .hero.is-danger .navbar-item,html.theme--catppuccin-mocha .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--catppuccin-mocha .hero.is-danger a.navbar-item:hover,html.theme--catppuccin-mocha .hero.is-danger a.navbar-item.is-active,html.theme--catppuccin-mocha .hero.is-danger .navbar-link:hover,html.theme--catppuccin-mocha .hero.is-danger .navbar-link.is-active{background-color:#f17497;color:#fff}html.theme--catppuccin-mocha .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--catppuccin-mocha .hero.is-danger .tabs a:hover{opacity:1}html.theme--catppuccin-mocha .hero.is-danger .tabs li.is-active a{color:#f38ba8 !important;opacity:1}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed a:hover,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--catppuccin-mocha .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f38ba8}html.theme--catppuccin-mocha .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #f7549d 0%, #f38ba8 71%, #f8a0a9 100%)}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f7549d 0%, #f38ba8 71%, #f8a0a9 100%)}}html.theme--catppuccin-mocha .hero.is-small .hero-body,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--catppuccin-mocha .hero.is-halfheight .hero-body,html.theme--catppuccin-mocha .hero.is-fullheight .hero-body,html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--catppuccin-mocha .hero.is-halfheight .hero-body>.container,html.theme--catppuccin-mocha .hero.is-fullheight .hero-body>.container,html.theme--catppuccin-mocha .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--catppuccin-mocha .hero.is-halfheight{min-height:50vh}html.theme--catppuccin-mocha .hero.is-fullheight{min-height:100vh}html.theme--catppuccin-mocha .hero-video{overflow:hidden}html.theme--catppuccin-mocha .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--catppuccin-mocha .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero-video{display:none}}html.theme--catppuccin-mocha .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--catppuccin-mocha .hero-buttons .button{display:flex}html.theme--catppuccin-mocha .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero-buttons{display:flex;justify-content:center}html.theme--catppuccin-mocha .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--catppuccin-mocha .hero-head,html.theme--catppuccin-mocha .hero-foot{flex-grow:0;flex-shrink:0}html.theme--catppuccin-mocha .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--catppuccin-mocha .hero-body{padding:3rem 3rem}}html.theme--catppuccin-mocha .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha .section{padding:3rem 3rem}html.theme--catppuccin-mocha .section.is-medium{padding:9rem 4.5rem}html.theme--catppuccin-mocha .section.is-large{padding:18rem 6rem}}html.theme--catppuccin-mocha .footer{background-color:#181825;padding:3rem 1.5rem 6rem}html.theme--catppuccin-mocha h1 .docs-heading-anchor,html.theme--catppuccin-mocha h1 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h1 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h2 .docs-heading-anchor,html.theme--catppuccin-mocha h2 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h2 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h3 .docs-heading-anchor,html.theme--catppuccin-mocha h3 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h3 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h4 .docs-heading-anchor,html.theme--catppuccin-mocha h4 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h4 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h5 .docs-heading-anchor,html.theme--catppuccin-mocha h5 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h5 .docs-heading-anchor:visited,html.theme--catppuccin-mocha h6 .docs-heading-anchor,html.theme--catppuccin-mocha h6 .docs-heading-anchor:hover,html.theme--catppuccin-mocha h6 .docs-heading-anchor:visited{color:#cdd6f4}html.theme--catppuccin-mocha h1 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h2 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h3 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h4 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h5 .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--catppuccin-mocha h1 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h2 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h3 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h4 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h5 .docs-heading-anchor-permalink::before,html.theme--catppuccin-mocha h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--catppuccin-mocha h1:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h2:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h3:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h4:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h5:hover .docs-heading-anchor-permalink,html.theme--catppuccin-mocha h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--catppuccin-mocha .docs-light-only{display:none !important}html.theme--catppuccin-mocha pre{position:relative;overflow:hidden}html.theme--catppuccin-mocha pre code,html.theme--catppuccin-mocha pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--catppuccin-mocha pre code:first-of-type,html.theme--catppuccin-mocha pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--catppuccin-mocha pre code:last-of-type,html.theme--catppuccin-mocha pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--catppuccin-mocha pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#cdd6f4;cursor:pointer;text-align:center}html.theme--catppuccin-mocha pre .copy-button:focus,html.theme--catppuccin-mocha pre .copy-button:hover{opacity:1;background:rgba(205,214,244,0.1);color:#89b4fa}html.theme--catppuccin-mocha pre .copy-button.success{color:#a6e3a1;opacity:1}html.theme--catppuccin-mocha pre .copy-button.error{color:#f38ba8;opacity:1}html.theme--catppuccin-mocha pre:hover .copy-button{opacity:1}html.theme--catppuccin-mocha .admonition{background-color:#181825;border-style:solid;border-width:2px;border-color:#bac2de;border-radius:4px;font-size:1rem}html.theme--catppuccin-mocha .admonition strong{color:currentColor}html.theme--catppuccin-mocha .admonition.is-small,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--catppuccin-mocha .admonition.is-medium{font-size:1.25rem}html.theme--catppuccin-mocha .admonition.is-large{font-size:1.5rem}html.theme--catppuccin-mocha .admonition.is-default{background-color:#181825;border-color:#bac2de}html.theme--catppuccin-mocha .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#bac2de}html.theme--catppuccin-mocha .admonition.is-default>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-info{background-color:#181825;border-color:#94e2d5}html.theme--catppuccin-mocha .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#94e2d5}html.theme--catppuccin-mocha .admonition.is-info>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-success{background-color:#181825;border-color:#a6e3a1}html.theme--catppuccin-mocha .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#a6e3a1}html.theme--catppuccin-mocha .admonition.is-success>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-warning{background-color:#181825;border-color:#f9e2af}html.theme--catppuccin-mocha .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#f9e2af}html.theme--catppuccin-mocha .admonition.is-warning>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-danger{background-color:#181825;border-color:#f38ba8}html.theme--catppuccin-mocha .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#f38ba8}html.theme--catppuccin-mocha .admonition.is-danger>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-compat{background-color:#181825;border-color:#89dceb}html.theme--catppuccin-mocha .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#89dceb}html.theme--catppuccin-mocha .admonition.is-compat>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition.is-todo{background-color:#181825;border-color:#cba6f7}html.theme--catppuccin-mocha .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#cba6f7}html.theme--catppuccin-mocha .admonition.is-todo>.admonition-body{color:#cdd6f4}html.theme--catppuccin-mocha .admonition-header{color:#bac2de;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--catppuccin-mocha .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--catppuccin-mocha details.admonition.is-details>.admonition-header{list-style:none}html.theme--catppuccin-mocha details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--catppuccin-mocha details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--catppuccin-mocha .admonition-body{color:#cdd6f4;padding:0.5rem .75rem}html.theme--catppuccin-mocha .admonition-body pre{background-color:#181825}html.theme--catppuccin-mocha .admonition-body code{background-color:#181825}html.theme--catppuccin-mocha .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #585b70;border-radius:4px;box-shadow:none;max-width:100%}html.theme--catppuccin-mocha .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#181825;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #585b70;overflow:auto}html.theme--catppuccin-mocha .docstring>header code{background-color:transparent}html.theme--catppuccin-mocha .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--catppuccin-mocha .docstring>header .docstring-binding{margin-right:0.3em}html.theme--catppuccin-mocha .docstring>header .docstring-category{margin-left:0.3em}html.theme--catppuccin-mocha .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #585b70}html.theme--catppuccin-mocha .docstring>section:last-child{border-bottom:none}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--catppuccin-mocha .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-mocha .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--catppuccin-mocha .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--catppuccin-mocha .documenter-example-output{background-color:#1e1e2e}html.theme--catppuccin-mocha .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#181825;color:#cdd6f4;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--catppuccin-mocha .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--catppuccin-mocha .outdated-warning-overlay a{color:#89b4fa}html.theme--catppuccin-mocha .outdated-warning-overlay a:hover{color:#89dceb}html.theme--catppuccin-mocha .content pre{border:2px solid #585b70;border-radius:4px}html.theme--catppuccin-mocha .content code{font-weight:inherit}html.theme--catppuccin-mocha .content a code{color:#89b4fa}html.theme--catppuccin-mocha .content a:hover code{color:#89dceb}html.theme--catppuccin-mocha .content h1 code,html.theme--catppuccin-mocha .content h2 code,html.theme--catppuccin-mocha .content h3 code,html.theme--catppuccin-mocha .content h4 code,html.theme--catppuccin-mocha .content h5 code,html.theme--catppuccin-mocha .content h6 code{color:#cdd6f4}html.theme--catppuccin-mocha .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--catppuccin-mocha .content blockquote>ul:first-child,html.theme--catppuccin-mocha .content blockquote>ol:first-child,html.theme--catppuccin-mocha .content .admonition-body>ul:first-child,html.theme--catppuccin-mocha .content .admonition-body>ol:first-child{margin-top:0}html.theme--catppuccin-mocha pre,html.theme--catppuccin-mocha code{font-variant-ligatures:no-contextual}html.theme--catppuccin-mocha .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--catppuccin-mocha .breadcrumb a.is-disabled,html.theme--catppuccin-mocha .breadcrumb a.is-disabled:hover{color:#b8c5ef}html.theme--catppuccin-mocha .hljs{background:initial !important}html.theme--catppuccin-mocha .katex .katex-mathml{top:0;right:0}html.theme--catppuccin-mocha .katex-display,html.theme--catppuccin-mocha mjx-container,html.theme--catppuccin-mocha .MathJax_Display{margin:0.5em 0 !important}html.theme--catppuccin-mocha html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--catppuccin-mocha li.no-marker{list-style:none}html.theme--catppuccin-mocha #documenter .docs-main>article{overflow-wrap:break-word}html.theme--catppuccin-mocha #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main{width:100%}html.theme--catppuccin-mocha #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--catppuccin-mocha #documenter .docs-main>header,html.theme--catppuccin-mocha #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar{background-color:#1e1e2e;border-bottom:1px solid #585b70;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--catppuccin-mocha #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--catppuccin-mocha #documenter .docs-main section.footnotes{border-top:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .tag:first-child,html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--catppuccin-mocha #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--catppuccin-mocha .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #585b70;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--catppuccin-mocha #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--catppuccin-mocha #documenter .docs-sidebar{display:flex;flex-direction:column;color:#cdd6f4;background-color:#181825;border-right:1px solid #585b70;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--catppuccin-mocha #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar{left:0;top:0}}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name a,html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-package-name a:hover{color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #585b70;display:none;padding:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #585b70;padding-bottom:1.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#cdd6f4;background:#181825}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#cdd6f4;background-color:#202031}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #585b70;border-bottom:1px solid #585b70;background-color:#11111b}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#11111b;color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#202031;color:#cdd6f4}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #585b70}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--catppuccin-mocha #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#28283e}html.theme--catppuccin-mocha #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#383856}}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#28283e}html.theme--catppuccin-mocha #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#383856}}html.theme--catppuccin-mocha kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--catppuccin-mocha .search-min-width-50{min-width:50%}html.theme--catppuccin-mocha .search-min-height-100{min-height:100%}html.theme--catppuccin-mocha .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--catppuccin-mocha .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover,html.theme--catppuccin-mocha .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--catppuccin-mocha .search-result-link .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-mocha .property-search-result-badge,html.theme--catppuccin-mocha .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--catppuccin-mocha .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:hover .search-filter,html.theme--catppuccin-mocha .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--catppuccin-mocha .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--catppuccin-mocha .search-filter:hover,html.theme--catppuccin-mocha .search-filter:focus{color:#333}html.theme--catppuccin-mocha .search-filter-selected{color:#313244;background-color:#b4befe}html.theme--catppuccin-mocha .search-filter-selected:hover,html.theme--catppuccin-mocha .search-filter-selected:focus{color:#313244}html.theme--catppuccin-mocha .search-result-highlight{background-color:#ffdd57;color:black}html.theme--catppuccin-mocha .search-divider{border-bottom:1px solid #585b70}html.theme--catppuccin-mocha .search-result-title{width:85%;color:#f5f5f5}html.theme--catppuccin-mocha .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--catppuccin-mocha #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--catppuccin-mocha #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--catppuccin-mocha .w-100{width:100%}html.theme--catppuccin-mocha .gap-2{gap:0.5rem}html.theme--catppuccin-mocha .gap-4{gap:1rem}html.theme--catppuccin-mocha .gap-8{gap:2rem}html.theme--catppuccin-mocha{background-color:#1e1e2e;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--catppuccin-mocha a{transition:all 200ms ease}html.theme--catppuccin-mocha .label{color:#cdd6f4}html.theme--catppuccin-mocha .button,html.theme--catppuccin-mocha .control.has-icons-left .icon,html.theme--catppuccin-mocha .control.has-icons-right .icon,html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .pagination-ellipsis,html.theme--catppuccin-mocha .pagination-link,html.theme--catppuccin-mocha .pagination-next,html.theme--catppuccin-mocha .pagination-previous,html.theme--catppuccin-mocha .select,html.theme--catppuccin-mocha .select select,html.theme--catppuccin-mocha .textarea{height:2.5em;color:#cdd6f4}html.theme--catppuccin-mocha .input,html.theme--catppuccin-mocha #documenter .docs-sidebar form.docs-search>input,html.theme--catppuccin-mocha .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em;color:#cdd6f4}html.theme--catppuccin-mocha .select:after,html.theme--catppuccin-mocha .select select{border-width:1px}html.theme--catppuccin-mocha .menu-list a{transition:all 300ms ease}html.theme--catppuccin-mocha .modal-card-foot,html.theme--catppuccin-mocha .modal-card-head{border-color:#585b70}html.theme--catppuccin-mocha .navbar{border-radius:.4em}html.theme--catppuccin-mocha .navbar.is-transparent{background:none}html.theme--catppuccin-mocha .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--catppuccin-mocha .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#89b4fa}@media screen and (max-width: 1055px){html.theme--catppuccin-mocha .navbar .navbar-menu{background-color:#89b4fa;border-radius:0 0 .4em .4em}}html.theme--catppuccin-mocha .docstring>section>a.docs-sourcelink:not(body){color:#313244}html.theme--catppuccin-mocha .tag.is-link:not(body),html.theme--catppuccin-mocha .docstring>section>a.is-link.docs-sourcelink:not(body),html.theme--catppuccin-mocha .content kbd.is-link:not(body){color:#313244}html.theme--catppuccin-mocha .ansi span.sgr1{font-weight:bolder}html.theme--catppuccin-mocha .ansi span.sgr2{font-weight:lighter}html.theme--catppuccin-mocha .ansi span.sgr3{font-style:italic}html.theme--catppuccin-mocha .ansi span.sgr4{text-decoration:underline}html.theme--catppuccin-mocha .ansi span.sgr7{color:#1e1e2e;background-color:#cdd6f4}html.theme--catppuccin-mocha .ansi span.sgr8{color:transparent}html.theme--catppuccin-mocha .ansi span.sgr8 span{color:transparent}html.theme--catppuccin-mocha .ansi span.sgr9{text-decoration:line-through}html.theme--catppuccin-mocha .ansi span.sgr30{color:#45475a}html.theme--catppuccin-mocha .ansi span.sgr31{color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr32{color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr33{color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr34{color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr35{color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr36{color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr37{color:#bac2de}html.theme--catppuccin-mocha .ansi span.sgr40{background-color:#45475a}html.theme--catppuccin-mocha .ansi span.sgr41{background-color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr42{background-color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr43{background-color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr44{background-color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr45{background-color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr46{background-color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr47{background-color:#bac2de}html.theme--catppuccin-mocha .ansi span.sgr90{color:#585b70}html.theme--catppuccin-mocha .ansi span.sgr91{color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr92{color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr93{color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr94{color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr95{color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr96{color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr97{color:#a6adc8}html.theme--catppuccin-mocha .ansi span.sgr100{background-color:#585b70}html.theme--catppuccin-mocha .ansi span.sgr101{background-color:#f38ba8}html.theme--catppuccin-mocha .ansi span.sgr102{background-color:#a6e3a1}html.theme--catppuccin-mocha .ansi span.sgr103{background-color:#f9e2af}html.theme--catppuccin-mocha .ansi span.sgr104{background-color:#89b4fa}html.theme--catppuccin-mocha .ansi span.sgr105{background-color:#f5c2e7}html.theme--catppuccin-mocha .ansi span.sgr106{background-color:#94e2d5}html.theme--catppuccin-mocha .ansi span.sgr107{background-color:#a6adc8}html.theme--catppuccin-mocha code.language-julia-repl>span.hljs-meta{color:#a6e3a1;font-weight:bolder}html.theme--catppuccin-mocha code .hljs{color:#cdd6f4;background:#1e1e2e}html.theme--catppuccin-mocha code .hljs-keyword{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-built_in{color:#f38ba8}html.theme--catppuccin-mocha code .hljs-type{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-literal{color:#fab387}html.theme--catppuccin-mocha code .hljs-number{color:#fab387}html.theme--catppuccin-mocha code .hljs-operator{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-punctuation{color:#bac2de}html.theme--catppuccin-mocha code .hljs-property{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-regexp{color:#f5c2e7}html.theme--catppuccin-mocha code .hljs-string{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-char.escape_{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-subst{color:#a6adc8}html.theme--catppuccin-mocha code .hljs-symbol{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-variable{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-variable.language_{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-variable.constant_{color:#fab387}html.theme--catppuccin-mocha code .hljs-title{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-title.class_{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-title.function_{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-params{color:#cdd6f4}html.theme--catppuccin-mocha code .hljs-comment{color:#585b70}html.theme--catppuccin-mocha code .hljs-doctag{color:#f38ba8}html.theme--catppuccin-mocha code .hljs-meta{color:#fab387}html.theme--catppuccin-mocha code .hljs-section{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-tag{color:#a6adc8}html.theme--catppuccin-mocha code .hljs-name{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-attr{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-attribute{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-bullet{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-code{color:#a6e3a1}html.theme--catppuccin-mocha code .hljs-emphasis{color:#f38ba8;font-style:italic}html.theme--catppuccin-mocha code .hljs-strong{color:#f38ba8;font-weight:bold}html.theme--catppuccin-mocha code .hljs-formula{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-link{color:#74c7ec;font-style:italic}html.theme--catppuccin-mocha code .hljs-quote{color:#a6e3a1;font-style:italic}html.theme--catppuccin-mocha code .hljs-selector-tag{color:#f9e2af}html.theme--catppuccin-mocha code .hljs-selector-id{color:#89b4fa}html.theme--catppuccin-mocha code .hljs-selector-class{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-selector-attr{color:#cba6f7}html.theme--catppuccin-mocha code .hljs-selector-pseudo{color:#94e2d5}html.theme--catppuccin-mocha code .hljs-template-tag{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-template-variable{color:#f2cdcd}html.theme--catppuccin-mocha code .hljs-addition{color:#a6e3a1;background:rgba(166,227,161,0.15)}html.theme--catppuccin-mocha code .hljs-deletion{color:#f38ba8;background:rgba(243,139,168,0.15)}html.theme--catppuccin-mocha .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover,html.theme--catppuccin-mocha .search-result-link:focus{background-color:#313244}html.theme--catppuccin-mocha .search-result-link .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link .search-filter{transition:all 300ms}html.theme--catppuccin-mocha .search-result-link:hover .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:hover .search-filter,html.theme--catppuccin-mocha .search-result-link:focus .property-search-result-badge,html.theme--catppuccin-mocha .search-result-link:focus .search-filter{color:#313244 !important;background-color:#b4befe !important}html.theme--catppuccin-mocha .search-result-title{color:#cdd6f4}html.theme--catppuccin-mocha .search-result-highlight{background-color:#f38ba8;color:#181825}html.theme--catppuccin-mocha .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--catppuccin-mocha .w-100{width:100%}html.theme--catppuccin-mocha .gap-2{gap:0.5rem}html.theme--catppuccin-mocha .gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themes/documenter-dark.css b/previews/PR1200/assets/themes/documenter-dark.css new file mode 100644 index 0000000000..c41c82f25a --- /dev/null +++ b/previews/PR1200/assets/themes/documenter-dark.css @@ -0,0 +1,7 @@ +html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .pagination:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-primary-light{color:#f1f5f9 !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#cddbe9 !important}.has-background-primary-light{background-color:#f1f5f9 !important}.has-text-primary-dark{color:#4d7eb2 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#7198c1 !important}.has-background-primary-dark{background-color:#4d7eb2 !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-link-light{color:#edfdf9 !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c0f6ec !important}.has-background-link-light{background-color:#edfdf9 !important}.has-text-link-dark{color:#15987e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1bc5a4 !important}.has-background-link-dark{background-color:#15987e !important}.has-text-info{color:#3c5dcd !important}a.has-text-info:hover,a.has-text-info:focus{color:#2c48aa !important}.has-background-info{background-color:#3c5dcd !important}.has-text-info-light{color:#eff2fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6d0f0 !important}.has-background-info-light{background-color:#eff2fb !important}.has-text-info-dark{color:#3253c3 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#5571d3 !important}.has-background-info-dark{background-color:#3253c3 !important}.has-text-success{color:#259a12 !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a6c0d !important}.has-background-success{background-color:#259a12 !important}.has-text-success-light{color:#effded !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c7f8bf !important}.has-background-success-light{background-color:#effded !important}.has-text-success-dark{color:#2ec016 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#3fe524 !important}.has-background-success-dark{background-color:#2ec016 !important}.has-text-warning{color:#f4c72f !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#e4b30c !important}.has-background-warning{background-color:#f4c72f !important}.has-text-warning-light{color:#fefaec !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fbedbb !important}.has-background-warning-light{background-color:#fefaec !important}.has-text-warning-dark{color:#8c6e07 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#bd940a !important}.has-background-warning-dark{background-color:#8c6e07 !important}.has-text-danger{color:#cb3c33 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a23029 !important}.has-background-danger{background-color:#cb3c33 !important}.has-text-danger-light{color:#fbefef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f1c8c6 !important}.has-background-danger-light{background-color:#fbefef !important}.has-text-danger-dark{color:#c03930 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#d35850 !important}.has-background-danger-dark{background-color:#c03930 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--documenter-dark{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark optgroup,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:inherit}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1abc9c;text-decoration:none}html.theme--documenter-dark .button.is-ghost:hover,html.theme--documenter-dark .button.is-ghost.is-hovered{color:#1abc9c;text-decoration:underline}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:#ecf0f1;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:#282f2f;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:hover,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-light.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e8eef5;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:active,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-light.is-active,html.theme--documenter-dark .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#dfe8f1;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:#1abc9c;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:hover,html.theme--documenter-dark .button.is-link.is-light.is-hovered{background-color:#e2fbf6;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:active,html.theme--documenter-dark .button.is-link.is-light.is-active{background-color:#d7f9f3;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-info{background-color:#3c5dcd;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#3355c9;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#3151bf;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#3c5dcd;border-color:#3c5dcd;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;box-shadow:none;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3c5dcd}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info.is-light{background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .button.is-info.is-light:hover,html.theme--documenter-dark .button.is-info.is-light.is-hovered{background-color:#e5e9f8;border-color:transparent;color:#3253c3}html.theme--documenter-dark .button.is-info.is-light:active,html.theme--documenter-dark .button.is-info.is-light.is-active{background-color:#dae1f6;border-color:transparent;color:#3253c3}html.theme--documenter-dark .button.is-success{background-color:#259a12;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#228f11;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#20830f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#259a12;border-color:#259a12;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#259a12}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;color:#259a12}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#259a12;border-color:#259a12;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #259a12 #259a12 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;box-shadow:none;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#259a12}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #259a12 #259a12 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success.is-light{background-color:#effded;color:#2ec016}html.theme--documenter-dark .button.is-success.is-light:hover,html.theme--documenter-dark .button.is-success.is-light.is-hovered{background-color:#e5fce1;border-color:transparent;color:#2ec016}html.theme--documenter-dark .button.is-success.is-light:active,html.theme--documenter-dark .button.is-success.is-light.is-active{background-color:#dbfad6;border-color:transparent;color:#2ec016}html.theme--documenter-dark .button.is-warning{background-color:#f4c72f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#f3c423;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#f3c017;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#f4c72f;border-color:#f4c72f;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#f4c72f;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#f4c72f;border-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #f4c72f #f4c72f !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#f4c72f;box-shadow:none;color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f4c72f #f4c72f !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-warning.is-light{background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .button.is-warning.is-light:hover,html.theme--documenter-dark .button.is-warning.is-light.is-hovered{background-color:#fdf7e0;border-color:transparent;color:#8c6e07}html.theme--documenter-dark .button.is-warning.is-light:active,html.theme--documenter-dark .button.is-warning.is-light.is-active{background-color:#fdf3d3;border-color:transparent;color:#8c6e07}html.theme--documenter-dark .button.is-danger{background-color:#cb3c33;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#c13930;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#b7362e;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#cb3c33;border-color:#cb3c33;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#cb3c33;border-color:#cb3c33;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;box-shadow:none;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#cb3c33}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger.is-light{background-color:#fbefef;color:#c03930}html.theme--documenter-dark .button.is-danger.is-light:hover,html.theme--documenter-dark .button.is-danger.is-light.is-hovered{background-color:#f8e6e5;border-color:transparent;color:#c03930}html.theme--documenter-dark .button.is-danger.is-light:active,html.theme--documenter-dark .button.is-danger.is-light.is-active{background-color:#f6dcda;border-color:transparent;color:#c03930}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--documenter-dark .button.is-small:not(.is-rounded),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--documenter-dark .button.is-normal{font-size:1rem}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#5e6d6f;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:1rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1.25rem}}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--documenter-dark .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:inherit}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--documenter-dark .content.is-normal{font-size:1rem}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--documenter-dark .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--documenter-dark .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--documenter-dark div.icon-text{display:flex}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--documenter-dark .image.is-fullwidth,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#fff}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .notification.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .notification.is-info.is-light{background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .notification.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .notification.is-success.is-light{background-color:#effded;color:#2ec016}html.theme--documenter-dark .notification.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-warning.is-light{background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .notification.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .notification.is-danger.is-light{background-color:#fbefef;color:#c03930}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#343c3d}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#3c5dcd}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #3c5dcd 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#259a12}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#259a12}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#259a12}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #259a12 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#f4c72f}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #f4c72f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#cb3c33}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #cb3c33 30%, #343c3d 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#343c3d;background-image:linear-gradient(to right, #fff 30%, #343c3d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-ms-fill{animation-name:none}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#259a12;border-color:#259a12;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#f4c72f;border-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#cb3c33;border-color:#cb3c33;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table td.is-vcentered,html.theme--documenter-dark .table th.is-vcentered{vertical-align:middle}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#fff}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-primary.is-light:not(body),html.theme--documenter-dark .content kbd.is-primary.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-link.is-light:not(body),html.theme--documenter-dark .content kbd.is-link.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .tag.is-info.is-light:not(body),html.theme--documenter-dark .content kbd.is-info.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#eff2fb;color:#3253c3}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#259a12;color:#fff}html.theme--documenter-dark .tag.is-success.is-light:not(body),html.theme--documenter-dark .content kbd.is-success.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#effded;color:#2ec016}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-warning.is-light:not(body),html.theme--documenter-dark .content kbd.is-warning.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fefaec;color:#8c6e07}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#cb3c33;color:#fff}html.theme--documenter-dark .tag.is-danger.is-light:not(body),html.theme--documenter-dark .content kbd.is-danger.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fbefef;color:#c03930}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:1rem}html.theme--documenter-dark .title.is-7{font-size:.75rem}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:1rem}html.theme--documenter-dark .subtitle.is-7{font-size:.75rem}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#3c5dcd}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#259a12}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#f4c72f}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#cb3c33}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox,html.theme--documenter-dark .radio input[disabled],html.theme--documenter-dark .checkbox input[disabled]{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.5em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#3c5dcd}html.theme--documenter-dark .select.is-info select{border-color:#3c5dcd}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#3151bf}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#259a12}html.theme--documenter-dark .select.is-success select{border-color:#259a12}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#20830f}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#f4c72f}html.theme--documenter-dark .select.is-warning select{border-color:#f4c72f}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#f3c017}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(244,199,47,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#cb3c33}html.theme--documenter-dark .select.is-danger select{border-color:#cb3c33}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#b7362e}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff !important;opacity:0.5}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#fff}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#3c5dcd;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#3355c9;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(60,93,205,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#3151bf;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#259a12;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#228f11;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(37,154,18,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#20830f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#f4c72f;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#f3c423;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(244,199,47,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#f3c017;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#cb3c33;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#c13930;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(203,60,51,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#b7362e;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--documenter-dark .file.is-normal{font-size:1rem}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#232829;color:#f2f2f2}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#282f2f;color:#fff}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#f2f2f2;display:block;font-size:1rem;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#3c5dcd}html.theme--documenter-dark .help.is-success{color:#259a12}html.theme--documenter-dark .help.is-warning{color:#f4c72f}html.theme--documenter-dark .help.is-danger{color:#cb3c33}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#282f2f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#5e6d6f;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.5em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.5em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-footer:first-child,html.theme--documenter-dark .card-content:first-child,html.theme--documenter-dark .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-footer:last-child,html.theme--documenter-dark .card-content:last-child,html.theme--documenter-dark .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--documenter-dark .media .media .media{padding-top:.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:1rem}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#fff}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f1f5f9}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#4d7eb2}html.theme--documenter-dark .message.is-link{background-color:#edfdf9}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#15987e}html.theme--documenter-dark .message.is-info{background-color:#eff2fb}html.theme--documenter-dark .message.is-info .message-header{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#3c5dcd;color:#3253c3}html.theme--documenter-dark .message.is-success{background-color:#effded}html.theme--documenter-dark .message.is-success .message-header{background-color:#259a12;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#259a12;color:#2ec016}html.theme--documenter-dark .message.is-warning{background-color:#fefaec}html.theme--documenter-dark .message.is-warning .message-header{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-warning .message-body{border-color:#f4c72f;color:#8c6e07}html.theme--documenter-dark .message.is-danger{background-color:#fbefef}html.theme--documenter-dark .message.is-danger .message-header{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#cb3c33;color:#c03930}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#fff}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3151bf;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3c5dcd;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#20830f;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#259a12;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#f4c72f;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#b7362e;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#cb3c33;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:1rem;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.5em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-previous.is-disabled,html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-next.is-disabled,html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-link.is-disabled{background-color:#5e6d6f;border-color:#5e6d6f;box-shadow:none;color:#fff;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}html.theme--documenter-dark .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--documenter-dark .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--documenter-dark .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--documenter-dark .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--documenter-dark .panel.is-light .panel-heading{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-light .panel-tabs a.is-active{border-bottom-color:#ecf0f1}html.theme--documenter-dark .panel.is-light .panel-block.is-active .panel-icon{color:#ecf0f1}html.theme--documenter-dark .panel.is-dark .panel-heading,html.theme--documenter-dark .content kbd.panel .panel-heading{background-color:#282f2f;color:#fff}html.theme--documenter-dark .panel.is-dark .panel-tabs a.is-active,html.theme--documenter-dark .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#282f2f}html.theme--documenter-dark .panel.is-dark .panel-block.is-active .panel-icon,html.theme--documenter-dark .content kbd.panel .panel-block.is-active .panel-icon{color:#282f2f}html.theme--documenter-dark .panel.is-primary .panel-heading,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#375a7f;color:#fff}html.theme--documenter-dark .panel.is-primary .panel-tabs a.is-active,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#375a7f}html.theme--documenter-dark .panel.is-primary .panel-block.is-active .panel-icon,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#375a7f}html.theme--documenter-dark .panel.is-link .panel-heading{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1abc9c}html.theme--documenter-dark .panel.is-link .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel.is-info .panel-heading{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .panel.is-info .panel-tabs a.is-active{border-bottom-color:#3c5dcd}html.theme--documenter-dark .panel.is-info .panel-block.is-active .panel-icon{color:#3c5dcd}html.theme--documenter-dark .panel.is-success .panel-heading{background-color:#259a12;color:#fff}html.theme--documenter-dark .panel.is-success .panel-tabs a.is-active{border-bottom-color:#259a12}html.theme--documenter-dark .panel.is-success .panel-block.is-active .panel-icon{color:#259a12}html.theme--documenter-dark .panel.is-warning .panel-heading{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#f4c72f}html.theme--documenter-dark .panel.is-warning .panel-block.is-active .panel-icon{color:#f4c72f}html.theme--documenter-dark .panel.is-danger .panel-heading{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#cb3c33}html.theme--documenter-dark .panel.is-danger .panel-block.is-active .panel-icon{color:#cb3c33}html.theme--documenter-dark .panel-tabs:not(:last-child),html.theme--documenter-dark .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--documenter-dark .panel-heading{background-color:#343c3d;border-radius:8px 8px 0 0;color:#f2f2f2;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none;width:unset}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none;width:unset}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none;width:unset}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none;width:unset}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none;width:unset}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none;width:unset}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.33333337%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.66666674%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.33333337%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.66666674%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.33333337%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.66666674%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.33333337%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.66666674%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{color:#ecf0f1 !important;opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#fff}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#fff}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{color:#282f2f !important;opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#375a7f !important;opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{color:#1abc9c !important;opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#3c5dcd;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#3c5dcd}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#3151bf;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{color:#3c5dcd !important;opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3c5dcd}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#259a12;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#259a12}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#20830f;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{color:#259a12 !important;opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#259a12}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#f4c72f;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#f4c72f}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#f3c017;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{color:#f4c72f !important;opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f4c72f}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #f09100 0%, #f4c72f 71%, #faef42 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #f09100 0%, #f4c72f 71%, #faef42 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#cb3c33;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#cb3c33}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#b7362e;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{color:#cb3c33 !important;opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#cb3c33}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-body{padding:3rem 3rem}}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section{padding:3rem 3rem}html.theme--documenter-dark .section.is-medium{padding:9rem 4.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 6rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#5a76d5}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#3c5dcd;box-shadow:0 0 0 2px rgba(60,93,205,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#2dbc16}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#259a12;box-shadow:0 0 0 2px rgba(37,154,18,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#f6d153}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#f4c72f;box-shadow:0 0 0 2px rgba(244,199,47,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#d35951}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#cb3c33;box-shadow:0 0 0 2px rgba(203,60,51,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:2px;border-color:#dbdee0;border-radius:4px;font-size:1rem}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#dbdee0}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#3c5dcd}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#3c5dcd}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#259a12}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#259a12}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#f4c72f}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#f4c72f}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#cb3c33}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#cb3c33}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#3489da}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#3489da}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-todo{background-color:#282f2f;border-color:#9558b2}html.theme--documenter-dark .admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#9558b2}html.theme--documenter-dark .admonition.is-todo>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#dbdee0;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark details.admonition.is-details>.admonition-header{list-style:none}html.theme--documenter-dark details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--documenter-dark details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #5e6d6f;border-radius:4px;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f;overflow:auto}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:2px solid #5e6d6f;border-radius:4px}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content a:hover code{color:#1dd2af}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--documenter-dark #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--documenter-dark .search-min-width-50{min-width:50%}html.theme--documenter-dark .search-min-height-100{min-height:100%}html.theme--documenter-dark .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .property-search-result-badge,html.theme--documenter-dark .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--documenter-dark .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--documenter-dark .search-filter:hover,html.theme--documenter-dark .search-filter:focus{color:#333}html.theme--documenter-dark .search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}html.theme--documenter-dark .search-filter-selected:hover,html.theme--documenter-dark .search-filter-selected:focus{color:#f5f5f5}html.theme--documenter-dark .search-result-highlight{background-color:#ffdd57;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .search-result-title{width:85%;color:#f5f5f5}html.theme--documenter-dark .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem}html.theme--documenter-dark .gap-8{gap:2rem}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333 !important;background-color:#f1f5f9 !important}html.theme--documenter-dark .search-result-title{color:whitesmoke}html.theme--documenter-dark .search-result-highlight{background-color:greenyellow;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f50}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themes/documenter-light.css b/previews/PR1200/assets/themes/documenter-light.css new file mode 100644 index 0000000000..e000447e60 --- /dev/null +++ b/previews/PR1200/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-primary-light{color:#eef8fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c3e6f4 !important}.has-background-primary-light{background-color:#eef8fc !important}.has-text-primary-dark{color:#1a6d8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#228eb9 !important}.has-background-primary-dark{background-color:#1a6d8e !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-link-light{color:#eff3fb !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c6d6f1 !important}.has-background-link-light{background-color:#eff3fb !important}.has-text-link-dark{color:#3169c4 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#5485d4 !important}.has-background-link-dark{background-color:#3169c4 !important}.has-text-info{color:#3c5dcd !important}a.has-text-info:hover,a.has-text-info:focus{color:#2c48aa !important}.has-background-info{background-color:#3c5dcd !important}.has-text-info-light{color:#eff2fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6d0f0 !important}.has-background-info-light{background-color:#eff2fb !important}.has-text-info-dark{color:#3253c3 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#5571d3 !important}.has-background-info-dark{background-color:#3253c3 !important}.has-text-success{color:#259a12 !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a6c0d !important}.has-background-success{background-color:#259a12 !important}.has-text-success-light{color:#effded !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c7f8bf !important}.has-background-success-light{background-color:#effded !important}.has-text-success-dark{color:#2ec016 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#3fe524 !important}.has-background-success-dark{background-color:#2ec016 !important}.has-text-warning{color:#a98800 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#765f00 !important}.has-background-warning{background-color:#a98800 !important}.has-text-warning-light{color:#fffbeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fff1b8 !important}.has-background-warning-light{background-color:#fffbeb !important}.has-text-warning-dark{color:#cca400 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#ffcd00 !important}.has-background-warning-dark{background-color:#cca400 !important}.has-text-danger{color:#cb3c33 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a23029 !important}.has-background-danger{background-color:#cb3c33 !important}.has-text-danger-light{color:#fbefef !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#f1c8c6 !important}.has-background-danger-light{background-color:#fbefef !important}.has-text-danger-dark{color:#c03930 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#d35850 !important}.has-background-danger-dark{background-color:#c03930 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#222}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:#bbb;color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#222;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#2e63b8;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#2e63b8;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light,.docstring>section>a.button.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.button.is-primary.is-light:hover,.docstring>section>a.button.is-light.docs-sourcelink:hover,.button.is-primary.is-light.is-hovered,.docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e3f3fa;border-color:transparent;color:#1a6d8e}.button.is-primary.is-light:active,.docstring>section>a.button.is-light.docs-sourcelink:active,.button.is-primary.is-light.is-active,.docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d8eff8;border-color:transparent;color:#1a6d8e}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:#2e63b8;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff3fb;color:#3169c4}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e4ecf8;border-color:transparent;color:#3169c4}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dae5f6;border-color:transparent;color:#3169c4}.button.is-info{background-color:#3c5dcd;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3355c9;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3151bf;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3c5dcd;border-color:#3c5dcd;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3c5dcd}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3c5dcd}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;color:#3c5dcd}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3c5dcd;box-shadow:none;color:#3c5dcd}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3c5dcd}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3c5dcd #3c5dcd !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff2fb;color:#3253c3}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e5e9f8;border-color:transparent;color:#3253c3}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae1f6;border-color:transparent;color:#3253c3}.button.is-success{background-color:#259a12;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#228f11;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#20830f;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#259a12;border-color:#259a12;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#259a12}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#259a12}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#259a12;color:#259a12}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#259a12;border-color:#259a12;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #259a12 #259a12 !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#259a12;box-shadow:none;color:#259a12}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#259a12}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #259a12 #259a12 !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effded;color:#2ec016}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e5fce1;border-color:transparent;color:#2ec016}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dbfad6;border-color:transparent;color:#2ec016}.button.is-warning{background-color:#a98800;border-color:transparent;color:#fff}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#9c7d00;border-color:transparent;color:#fff}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:#fff}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#8f7300;border-color:transparent;color:#fff}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#a98800;border-color:#a98800;box-shadow:none}.button.is-warning.is-inverted{background-color:#fff;color:#a98800}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#a98800}.button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#a98800;color:#a98800}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#a98800;border-color:#a98800;color:#fff}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #a98800 #a98800 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#a98800;box-shadow:none;color:#a98800}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#a98800}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #a98800 #a98800 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-warning.is-light{background-color:#fffbeb;color:#cca400}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff9de;border-color:transparent;color:#cca400}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff6d1;border-color:transparent;color:#cca400}.button.is-danger{background-color:#cb3c33;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#c13930;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#b7362e;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#cb3c33;border-color:#cb3c33;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#cb3c33}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#cb3c33}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;color:#cb3c33}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#cb3c33;border-color:#cb3c33;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#cb3c33;box-shadow:none;color:#cb3c33}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#cb3c33}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #cb3c33 #cb3c33 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#fbefef;color:#c03930}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#f8e6e5;border-color:transparent;color:#c03930}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#f6dcda;border-color:transparent;color:#c03930}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}.button.is-small:not(.is-rounded),#documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){.container{max-width:992px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}.image.is-fullwidth,#documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#fff}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-primary.is-light,.docstring>section>a.notification.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-link.is-light{background-color:#eff3fb;color:#3169c4}.notification.is-info{background-color:#3c5dcd;color:#fff}.notification.is-info.is-light{background-color:#eff2fb;color:#3253c3}.notification.is-success{background-color:#259a12;color:#fff}.notification.is-success.is-light{background-color:#effded;color:#2ec016}.notification.is-warning{background-color:#a98800;color:#fff}.notification.is-warning.is-light{background-color:#fffbeb;color:#cca400}.notification.is-danger{background-color:#cb3c33;color:#fff}.notification.is-danger.is-light{background-color:#fbefef;color:#c03930}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3c5dcd}.progress.is-info::-moz-progress-bar{background-color:#3c5dcd}.progress.is-info::-ms-fill{background-color:#3c5dcd}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3c5dcd 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#259a12}.progress.is-success::-moz-progress-bar{background-color:#259a12}.progress.is-success::-ms-fill{background-color:#259a12}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #259a12 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#a98800}.progress.is-warning::-moz-progress-bar{background-color:#a98800}.progress.is-warning::-ms-fill{background-color:#a98800}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #a98800 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#cb3c33}.progress.is-danger::-moz-progress-bar{background-color:#cb3c33}.progress.is-danger::-ms-fill{background-color:#cb3c33}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #cb3c33 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #222 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#222}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#3c5dcd;border-color:#3c5dcd;color:#fff}.table td.is-success,.table th.is-success{background-color:#259a12;border-color:#259a12;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#a98800;border-color:#a98800;color:#fff}.table td.is-danger,.table th.is-danger{background-color:#cb3c33;border-color:#cb3c33;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#fff}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-primary.is-light:not(body),.content kbd.is-primary.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#eef8fc;color:#1a6d8e}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-link.is-light:not(body),.content kbd.is-link.is-light:not(body),.docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#eff3fb;color:#3169c4}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#3c5dcd;color:#fff}.tag.is-info.is-light:not(body),.content kbd.is-info.is-light:not(body),.docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#eff2fb;color:#3253c3}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#259a12;color:#fff}.tag.is-success.is-light:not(body),.content kbd.is-success.is-light:not(body),.docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#effded;color:#2ec016}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#a98800;color:#fff}.tag.is-warning.is-light:not(body),.content kbd.is-warning.is-light:not(body),.docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffbeb;color:#cca400}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#cb3c33;color:#fff}.tag.is-danger.is-light:not(body),.content kbd.is-danger.is-light:not(body),.docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fbefef;color:#c03930}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#222;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#222;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#222;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#222}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#707070}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#707070}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#707070}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#707070}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#3c5dcd}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#259a12}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#a98800}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#cb3c33}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#222}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#222}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#3c5dcd}.select.is-info select{border-color:#3c5dcd}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3151bf}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(60,93,205,0.25)}.select.is-success:not(:hover)::after{border-color:#259a12}.select.is-success select{border-color:#259a12}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#20830f}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(37,154,18,0.25)}.select.is-warning:not(:hover)::after{border-color:#a98800}.select.is-warning select{border-color:#a98800}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#8f7300}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(169,136,0,0.25)}.select.is-danger:not(:hover)::after{border-color:#cb3c33}.select.is-danger select{border-color:#cb3c33}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#b7362e}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(203,60,51,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b !important;opacity:0.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#fff}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3c5dcd;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3355c9;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(60,93,205,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3151bf;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#259a12;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#228f11;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(37,154,18,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#20830f;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#a98800;border-color:transparent;color:#fff}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#9c7d00;border-color:transparent;color:#fff}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(169,136,0,0.25);color:#fff}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#8f7300;border-color:transparent;color:#fff}.file.is-danger .file-cta{background-color:#cb3c33;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#c13930;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(203,60,51,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#b7362e;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#222}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#222}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#222}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#222;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#3c5dcd}.help.is-success{color:#259a12}.help.is-warning{color:#a98800}.help.is-danger{color:#cb3c33}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#222}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:#bbb;color:#222;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:#bbb;padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#222;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#eef8fc}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1a6d8e}.message.is-link{background-color:#eff3fb}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#3169c4}.message.is-info{background-color:#eff2fb}.message.is-info .message-header{background-color:#3c5dcd;color:#fff}.message.is-info .message-body{border-color:#3c5dcd;color:#3253c3}.message.is-success{background-color:#effded}.message.is-success .message-header{background-color:#259a12;color:#fff}.message.is-success .message-body{border-color:#259a12;color:#2ec016}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#a98800;color:#fff}.message.is-warning .message-body{border-color:#a98800;color:#cca400}.message.is-danger{background-color:#fbefef}.message.is-danger .message-header{background-color:#cb3c33;color:#fff}.message.is-danger .message-body{border-color:#cb3c33;color:#c03930}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#3c5dcd;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3151bf;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3c5dcd;color:#fff}}.navbar.is-success{background-color:#259a12;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#20830f;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#20830f;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#20830f;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#259a12;color:#fff}}.navbar.is-warning{background-color:#a98800;color:#fff}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:#fff}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:#fff}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#8f7300;color:#fff}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#a98800;color:#fff}}.navbar.is-danger{background-color:#cb3c33;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#b7362e;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#cb3c33;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#222;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#222;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:#bbb;font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading,.content kbd.panel .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active,.content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon,.content kbd.panel .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading,.docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#4eb5de;color:#fff}.panel.is-primary .panel-tabs a.is-active,.docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#4eb5de}.panel.is-primary .panel-block.is-active .panel-icon,.docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#4eb5de}.panel.is-link .panel-heading{background-color:#2e63b8;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#2e63b8}.panel.is-link .panel-block.is-active .panel-icon{color:#2e63b8}.panel.is-info .panel-heading{background-color:#3c5dcd;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3c5dcd}.panel.is-info .panel-block.is-active .panel-icon{color:#3c5dcd}.panel.is-success .panel-heading{background-color:#259a12;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#259a12}.panel.is-success .panel-block.is-active .panel-icon{color:#259a12}.panel.is-warning .panel-heading{background-color:#a98800;color:#fff}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#a98800}.panel.is-warning .panel-block.is-active .panel-icon{color:#a98800}.panel.is-danger .panel-heading{background-color:#cb3c33;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#cb3c33}.panel.is-danger .panel-block.is-active .panel-icon{color:#cb3c33}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#222;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,0.7)}.hero.is-light .subtitle{color:rgba(0,0,0,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#fff}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#fff;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#4eb5de !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#2e63b8 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#3c5dcd;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#3c5dcd}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3151bf;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3c5dcd !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3c5dcd}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #215bb5 0%, #3c5dcd 71%, #4b53d8 100%)}}.hero.is-success{background-color:#259a12;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#259a12}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#20830f;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#259a12 !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#259a12}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #287207 0%, #259a12 71%, #10b614 100%)}}.hero.is-warning{background-color:#a98800;color:#fff}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:#fff}.hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#a98800}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#8f7300;color:#fff}.hero.is-warning .tabs a{color:#fff;opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#a98800 !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:#fff}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#a98800}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #764b00 0%, #a98800 71%, #c2bd00 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #764b00 0%, #a98800 71%, #c2bd00 100%)}}.hero.is-danger{background-color:#cb3c33;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#cb3c33}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#b7362e;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#cb3c33 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#cb3c33}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ac1f2e 0%, #cb3c33 71%, #d66341 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#f5f5f5;border-style:solid;border-width:2px;border-color:#4a4a4a;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#f5f5f5;border-color:#4a4a4a}.admonition.is-default>.admonition-header{background-color:rgba(0,0,0,0);color:#4a4a4a}.admonition.is-default>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-info{background-color:#f5f5f5;border-color:#3c5dcd}.admonition.is-info>.admonition-header{background-color:rgba(0,0,0,0);color:#3c5dcd}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#f5f5f5;border-color:#259a12}.admonition.is-success>.admonition-header{background-color:rgba(0,0,0,0);color:#259a12}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#f5f5f5;border-color:#a98800}.admonition.is-warning>.admonition-header{background-color:rgba(0,0,0,0);color:#a98800}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#f5f5f5;border-color:#cb3c33}.admonition.is-danger>.admonition-header{background-color:rgba(0,0,0,0);color:#cb3c33}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#f5f5f5;border-color:#3489da}.admonition.is-compat>.admonition-header{background-color:rgba(0,0,0,0);color:#3489da}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-todo{background-color:#f5f5f5;border-color:#9558b2}.admonition.is-todo>.admonition-header{background-color:rgba(0,0,0,0);color:#9558b2}.admonition.is-todo>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#4a4a4a;background-color:rgba(0,0,0,0);align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}details.admonition.is-details>.admonition-header{list-style:none}details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:2px solid #dbdbdb;border-radius:4px;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb;overflow:auto}.docstring>header code{background-color:transparent}.docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#f5f5f5;color:rgba(0,0,0,0.7);border-bottom:3px solid rgba(0,0,0,0);padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:2px solid #dbdbdb;border-radius:4px}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content a:hover code{color:#363636}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1;overflow-x:hidden}#documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}#documenter .docs-sidebar #documenter-search-query{color:#707070;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(0,0,0,0.6);box-shadow:0 2px 0 1px rgba(0,0,0,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}.search-min-width-50{min-width:50%}.search-min-height-100{min-height:100%}.search-modal-card-body{max-height:calc(100vh - 15rem)}.search-result-link{border-radius:0.7em;transition:all 300ms}.search-result-link:hover,.search-result-link:focus{background-color:rgba(0,128,128,0.1)}.search-result-link .property-search-result-badge,.search-result-link .search-filter{transition:all 300ms}.property-search-result-badge,.search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}.search-result-link:hover .property-search-result-badge,.search-result-link:hover .search-filter,.search-result-link:focus .property-search-result-badge,.search-result-link:focus .search-filter{color:#f1f5f9;background-color:#333}.search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}.search-filter:hover,.search-filter:focus{color:#333}.search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}.search-filter-selected:hover,.search-filter-selected:focus{color:#f5f5f5}.search-result-highlight{background-color:#ffdd57;color:black}.search-divider{border-bottom:1px solid #dbdbdb}.search-result-title{width:85%;color:#333}.search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}#search-modal .modal-card-body::-webkit-scrollbar,#search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}#search-modal .modal-card-body::-webkit-scrollbar-thumb,#search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}#search-modal .modal-card-body::-webkit-scrollbar-track,#search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}.w-100{width:100%}.gap-2{gap:0.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#F3F3F3;color:#444}.hljs-comment{color:#697070}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#ab5656}.hljs-literal{color:#695}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.gap-4{gap:1rem} diff --git a/previews/PR1200/assets/themeswap.js b/previews/PR1200/assets/themeswap.js new file mode 100644 index 0000000000..9f5eebe6aa --- /dev/null +++ b/previews/PR1200/assets/themeswap.js @@ -0,0 +1,84 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Initialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if (window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the users preference is for dark color scheme + var darkPreference = + window.matchMedia("(prefers-color-scheme: dark)").matches === true; + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; + var disabled = []; + var primaryLightTheme = null; + var primaryDarkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + if (ss.ownerNode.getAttribute("data-theme-primary") !== null) { + primaryLightTheme = themename; + } + // Check if the theme is primary dark theme so that we could store its name in darkTheme + if (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null) { + primaryDarkTheme = themename; + } + // If we find a matching theme (and it's not the default), we'll set active to non-null + if (themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if (themename !== theme) disabled.push(ss); + } + var activeTheme = null; + if (active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName("html")[0].className = "theme--" + theme; + activeTheme = theme; + } else { + // If we did _not_ find an active theme, then we need to fall back to the primary theme + // which can either be dark or light, depending on the user's OS preference. + var activeTheme = darkPreference ? primaryDarkTheme : primaryLightTheme; + // In case it somehow happens that the relevant primary theme was not found in the + // preceding loop, we abort without doing anything. + if (activeTheme === null) { + console.error("Unable to determine primary theme."); + return; + } + // When switching to the primary light theme, then we must not have a class name + // for the tag. That's only for non-primary or the primary dark theme. + if (darkPreference) { + document.getElementsByTagName("html")[0].className = + "theme--" + activeTheme; + } else { + document.getElementsByTagName("html")[0].className = ""; + } + } + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // we'll disable all the stylesheets, except for the active one + ss.disabled = !(themename == activeTheme); + } +} +set_theme_from_local_storage(); diff --git a/previews/PR1200/assets/time_series_tutorial.png b/previews/PR1200/assets/time_series_tutorial.png new file mode 100644 index 0000000000..be45d28efb Binary files /dev/null and b/previews/PR1200/assets/time_series_tutorial.png differ diff --git a/previews/PR1200/assets/warner.js b/previews/PR1200/assets/warner.js new file mode 100644 index 0000000000..3f6f5d0083 --- /dev/null +++ b/previews/PR1200/assets/warner.js @@ -0,0 +1,52 @@ +function maybeAddWarning() { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return; + } + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return; + } + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return; + } + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement("meta"); + meta.name = "robots"; + meta.content = "noindex"; + + document.getElementsByTagName("head")[0].appendChild(meta); + } + + const div = document.createElement("div"); + div.classList.add("outdated-warning-overlay"); + const closer = document.createElement("button"); + closer.classList.add("outdated-warning-closer", "delete"); + closer.addEventListener("click", function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE; + div.innerHTML = + 'This documentation is not for the latest stable release, but for either the development version or an older release.
Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", maybeAddWarning); +} else { + maybeAddWarning(); +} diff --git a/previews/PR1200/explanation/dynamic_data/index.html b/previews/PR1200/explanation/dynamic_data/index.html new file mode 100644 index 0000000000..2046fa876b --- /dev/null +++ b/previews/PR1200/explanation/dynamic_data/index.html @@ -0,0 +1,2 @@ + +Dynamic Devices · PowerSystems.jl

Dynamic Devices

Static and Dynamic Data Layers

PowerSystems.jl uses two categories to define data for dynamic simulations:

  1. Static components, which includes the data needed to run a power flow problem
  2. Dynamic components are those that define differential equations to run a transient simulation. These dynamic data are attached to the static components.

Although PowerSystems.jl is not constrained to only PSS/e files, commonly the data for a dynamic simulation comes in a pair of files: One for the static data power flow case (e.g., .raw file) and a second one with the dynamic components information (e.g., .dyr file). However, PowerSystems.jl is able to take any power flow case and specify dynamic components to it. The two data layers in PowerSystems.jl are similar to the data division between those two files.

Layer 1: Static Components

The first data layer contains all the information necessary to run a power flow problem:

  • Vector of Bus elements, that define all the buses in the network.
  • Vector of Branch elements, that define all the branches elements (that connect two buses) in the network.
  • Vector of StaticInjection elements, that define all the devices connected to buses that can inject (or withdraw) power. These static devices, typically generators, in PowerSimulationsDynamics are used to solve the Power Flow problem that determines the active and reactive power provided for each device.
  • Vector of PowerLoad elements, that define all the loads connected to buses that can withdraw current. These are also used to solve the Power Flow.
  • Vector of Source elements, that define source components behind a reactance that can inject or withdraw current.
  • The base of power used to define per unit values, in MVA as a Float64 value.
  • The base frequency used in the system, in Hz as a Float64 value.

Layer 2: Dynamic Components

The second data layer contains the additional information describing the dynamic response of certain components in the System. This data is all attached to components defined in the static data layer:

  • (Optional) Selecting which of the Lines (of the Branch vector) elements must be modeled of DynamicLines elements, that can be used to model lines with differential equations.
  • Vector of DynamicInjection elements. These components must be attached to a StaticInjection that connects the power flow solution to the dynamic formulation of such device.

DynamicInjection can be DynamicGenerator or DynamicInverter, and its specific formulation (i.e. differential equations) will depend on the specific components that define each device (see the sections below). As a result, it is possible to flexibly define dynamic data models and methods according to the analysis requirements. DynamicInjection components use a parametric type pattern to materialize the full specification of the dynamic injection model with parameters. This design enable the use of parametric methods to specify the mathematical model of the dynamic components separately.

DynamicInjection components also implement some additional information useful for the modeling, like the usual states assumed by the model and the number of states. These values are derived from the documentation associated with the model, for instance PSS/e models provide parameters, states and variables. Although PowerSystems.jl doesn't assume a specific mathematical model for the components, the default values for these parameters are derived directly from the data model source.

Dynamic Generator Structure

Each generator is a data structure that is defined by the following components:

Dynamic Inverter Structure

Each inverter is a data structure that is defined by the following components:

  • DC Source: Defines the dynamics of the DC side of the converter.
  • Frequency Estimator: That describes how the frequency of the grid can be estimated using the grid voltages. Typically a phase-locked loop (PLL).
  • Outer Loop Control: That describes the active and reactive power control dynamics.
  • Inner Loop Control: That can describe virtual impedance, voltage control and current control dynamics.
  • Converter: That describes the dynamics of the pulse width modulation (PWM) or space vector modulation (SVM).
  • Filter: Used to connect the converter output to the grid.

⠀ ```

diff --git a/previews/PR1200/explanation/per_unit/index.html b/previews/PR1200/explanation/per_unit/index.html new file mode 100644 index 0000000000..4885824eb4 --- /dev/null +++ b/previews/PR1200/explanation/per_unit/index.html @@ -0,0 +1,2 @@ + +Per-unit Conventions · PowerSystems.jl

Per-unit Conventions

It is often useful to express power systems data in relative terms using per-unit conventions. PowerSystems.jl supports the automatic conversion of data between three different unit systems:

  1. "NATURAL_UNITS": The naturally defined units of each parameter (typically MW).
  2. "SYSTEM_BASE": Parameter values are divided by the system base_power.
  3. "DEVICE_BASE": Parameter values are divided by the device base_power.

PowerSystems.jl supports these unit systems because different power system tools and data sets use different units systems by convention, such as:

  • Dynamics data is often defined in device base
  • Network data (e.g., reactance, resistance) is often defined in system base
  • Production cost modeling data is often gathered from variety of data sources, which are typically defined in natural units

These three unit bases allow easy conversion between unit systems. This allows PowerSystems.jl users to input data in the formats they have available, as well as view data in the unit system that is most intuitive to them.

You can get and set the unit system setting of a System with get_units_base and set_units_base_system!.

Conversion between unit systems does not change the stored parameter values. Instead, unit system conversions are made when accessing parameters using the accessor functions, thus making it imperative to utilize the accessor functions instead of the "dot" accessor methods to ensure the return of the correct values. The units of the parameter values stored in each struct are defined in src/descriptors/power_system_structs.json.

There are some unit system conventions in PowerSystems.jl when defining new components. Currently, when you define components that aren't attached to a System, you must define all fields in "DEVICE_BASE", except for certain components that don't have their own base_power rating, such as Lines, where the rating must be defined in "SYSTEM_BASE".

In the future, PowerSystems.jl hopes to support defining components in natural units. For now, if you want to define data in natural units, you must first set the system units to "NATURAL_UNITS", define an empty component, and then use the accessor functions (e.g., getters and setters), to define each field within the component. The accessor functions will then do the data conversion from your input data in natural units (e.g., MW or MVA) to per-unit.

By default, PowerSystems.jl uses "SYSTEM_BASE" because many optimization problems won't converge when using natural units. If you change the unit setting, it's suggested that you switch back to "SYSTEM_BASE" before solving an optimization problem (for example in PowerSimulations.jl).

diff --git a/previews/PR1200/explanation/system/index.html b/previews/PR1200/explanation/system/index.html new file mode 100644 index 0000000000..d1eeea09a9 --- /dev/null +++ b/previews/PR1200/explanation/system/index.html @@ -0,0 +1,2 @@ + +System · PowerSystems.jl

System

The System is the main container of components and the time series data references. PowerSystems.jl uses a hybrid approach to data storage, where the component data and time series references are stored in volatile memory while the actual time series data is stored in an HDF5 file. This design loads into memory the portions of the data that are relevant at time of the query, and so avoids overwhelming the memory resources.

Accessing components stored in the System

PowerSystems.jl implements a wide variety of methods to search for components to aid in data manipulation. Most of these use the Type Structure to retrieve all components of a certain Type.

For example, the most common search function is get_components, which takes a desired device Type (concrete or abstract) and retrieves all components in that category from the System. It also accepts filter functions for a more refined search.

Given the potential size of the return, PowerSystems.jl returns Julia iterators in order to avoid unnecessary memory allocations. The container is optimized for iteration over abstract or concrete component types as described by the Type Structure.

Accessing data stored in a component

Using the "dot" access to get a parameter value from a component is actively discouraged, use "getter" functions instead

Using code autogeneration, PowerSystems.jl implements accessor (or "getter") functions to enable the retrieval of parameters defined in the component struct fields. Julia syntax enables access to this data using the "dot" access (e.g. component.field), however this is actively discouraged for two reasons:

  1. We make no guarantees on the stability of component structure definitions. We will maintain version stability on the accessor methods.
  2. Per-unit conversions are made in the return of data from the accessor functions. (see the per-unit section for more details)
diff --git a/previews/PR1200/explanation/time_series/index.html b/previews/PR1200/explanation/time_series/index.html new file mode 100644 index 0000000000..493f8a68bd --- /dev/null +++ b/previews/PR1200/explanation/time_series/index.html @@ -0,0 +1,10 @@ + +Time Series Data · PowerSystems.jl

Time Series Data

Categories of Time Series

The bulk of the data in many power system models is time series data. Given the potential complexity, PowerSystems.jl has a set of definitions to organize this data and enable consistent modeling.

PowerSystems.jl supports two categories of time series data depending on the process to obtain the data and its interpretation:

These categories are are all subtypes of TimeSeriesData and fall within this time series type hierarchy:

TimeSeriesData
+ ├─ Forecast
+ │   ├─ AbstractDeterministic
+ │   │   ├─ Deterministic
+ │   │   └─ DeterministicSingleTimeSeries
+ │   ├─ Probabilistic
+ │   └─ Scenarios
+ └─ StaticTimeSeries
+     └─ SingleTimeSeries

Static Time Series Data

A static time series data is a single column of data where each time period has a single value assigned to a component field, such as its maximum active power. This data commonly is obtained from historical information or the realization of a time-varying quantity.

Static time series usually comes in the following format, with a set resolution between the time-stamps:

DateTimeValue
2020-09-01T00:00:00100.0
2020-09-01T01:00:00101.0
2020-09-01T02:00:0099.0

This example is a 1-hour resolution static time-series.

In PowerSystems, a static time series is represented using SingleTimeSeries.

Forecasts

A forecast time series includes predicted values of a time-varying quantity that commonly includes a look-ahead window and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.

Key forecast format parameters are the forecast resolution, the interval of time between forecast initial times, and the number of forecast windows (or forecasted values) in the forecast horizon.

Forecast data usually comes in the following format, where a column represents the time stamp associated with the initial time of the forecast, and the remaining columns represent the forecasted values at each step in the forecast horizon.

DateTime01234567
2020-09-01T00:00:00100.0101.0101.390.098.087.088.067.0
2020-09-01T01:00:00101.0101.399.098.088.988.367.189.4
2020-09-01T02:00:0099.067.089.099.9100.0101.0112.0101.3

This example forecast has a interval of 1 hour and a horizon of 8.

PowerSystems defines the following Julia structs to represent forecasts:

  • Deterministic: Point forecast without any uncertainty representation.
  • Probabilistic: Stores a discretized cumulative distribution functions (CDFs) or probability distribution functions (PDFs) at each time step in the look-ahead window.
  • Scenarios: Stores a set of probable trajectories for forecasted quantity with equal probability.

Data Storage

By default PowerSystems stores time series data in an HDF5 file. This prevents large datasets from overwhelming system memory. Refer to this page for details on how the time series data is stored in HDF5 files.

Time series data can be stored actual component values (for instance MW) or scaling factors intended to be multiplied by a scalar to generate the component values. By default PowerSystems treats the values in the time series data as physical units. In order to specify them as scaling factors, you must pass the accessor function that provides the multiplier value (e.g., get_time_series_array). The scaling factor multiplier must be passed into the forecast when you create it to use this option.

The time series contains fields for scaling_factor_multiplier and data to identify the details of th Component field that the time series describes, and the time series data. For example: we commonly want to use a time series to describe the maximum active power capability of a renewable generator. In this case, we can create a SingleTimeSeries with a TimeArray and an accessor function to the maximum active power field in the struct describing the generator. In this way, we can store a scaling factor time series that will get multiplied by the maximum active power rather than the magnitudes of the maximum active power time series.

Examples of how to create and add time series to system can be found in the Add Time Series Example

diff --git a/previews/PR1200/explanation/type_structure/index.html b/previews/PR1200/explanation/type_structure/index.html new file mode 100644 index 0000000000..1b7a3209ff --- /dev/null +++ b/previews/PR1200/explanation/type_structure/index.html @@ -0,0 +1,14 @@ + +Type Structure · PowerSystems.jl

Type Structure

PowerSystems.jl provides a type hierarchy to contain power system data.

Types in PowerSystems

In PowerSystems.jl, data that describes infrastructure components is held in structs. For example, an ACBus is a struct with the following parameters to describe a bus on an AC network:

mutable struct ACBus
+    number::Int64
+    name::String
+    bustype::Union{Nothing, ACBusTypes}
+    angle::Union{Nothing, Float64}
+    magnitude::Union{Nothing, Float64}
+    voltage_limits::Union{Nothing, @NamedTuple{min::Float64, max::Float64}}
+    base_voltage::Union{Nothing, Float64}
+    area::Union{Nothing, Area}
+    load_zone::Union{Nothing, LoadZone}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystems.InfrastructureSystemsInternal
+end

Type Hierarchy

PowerSystems is intended to organize data by the behavior of the devices that the data represents. A type hierarchy has been defined with several levels of abstract types starting with InfrastructureSystemsType. There are a bunch of subtypes of InfrastructureSystemsType, but the important ones to know about are:

  • System: overarching struct that collects all of the Components

  • Component: includes all elements of power system data

    • Topology: includes non physical elements describing network connectivity
    • Service: includes descriptions of system requirements (other than energy balance)
    • Device: includes descriptions of all the physical devices in a power system
  • InfrastructureSystems.DeviceParameter: includes structs that hold data describing the dynamic, or economic capabilities of Device.

  • TimeSeriesData: Includes all time series types

    • Forecast: includes structs to define time series of forecasted data where multiple values can represent each time stamp
    • StaticTimeSeries: includes structs to define time series with a single value for each time stamp

The abstract hierarchy enables categorization of the devices by their operational characteristics and modeling requirements.

For instance, generation is classified by the distinctive data requirements for modeling in three categories: ThermalGen, RenewableGen, and HydroGen.

PowerSystems.jl has a category Topology of topological components (e.g., ACBus, Arc), separate from the physical components.

The hierarchy also includes components absent in standard data models, such as services. The services category includes reserves, transfers and AGC. The power of PowerSystems.jl lies in providing the abstraction without an implicit mathematical representation of the component.

As a result of this design, developers can define model logic entirely based on abstract types and create generic code to support modeling technologies that are not yet implemented in the package.

⠀ ```

diff --git a/previews/PR1200/generate_input_config_table.jl b/previews/PR1200/generate_input_config_table.jl new file mode 100644 index 0000000000..dc89055770 --- /dev/null +++ b/previews/PR1200/generate_input_config_table.jl @@ -0,0 +1,74 @@ +@info "Generating Input Configuration Descriptor Table" +function create_md() + descriptor = PowerSystems._read_config_file( + joinpath( + dirname(pathof(PowerSystems)), + "descriptors", + "power_system_inputs.json", + ), + ) + + columns = [ + "name", + "description", + "unit", + "unit_system", + "base_reference", + "default_value", + "value_options", + "value_range", + ] + header = "| " * join(columns, " | ") * " |\n" * repeat("|----", length(columns)) * "|\n" + + s = "## [`PowerSystemTableData` Accepted CSV Columns](@id tabledata_input_config) \n\n" + s = string( + s, + "The following tables describe default CSV column definitions accepted by the ", + ) + s = string( + s, + "`PowerSystemeTableData` parser defined by `src/descriptors/power_system_inputs.json`:\n\n", + ) + for (cat, items) in descriptor + csv = "" + for name in PowerSystems.INPUT_CATEGORY_NAMES + if name[2] == cat + csv = name[1] + break + end + end + + csv == "" && continue + + s = string(s, "### $csv.csv:\n\n") + s = string(s, header) + for item in items + extra_cols = setdiff(keys(item), columns) + if !isempty(extra_cols) + # make sure that there arent unexpected entries + throw(@error "config file fields not included in header" extra_cols) + end + row = [] + for col in columns + val = string(get(item, col, " ")) + if col == "default_value" && val == " " + val = "*REQUIRED*" + end + push!(row, val) + end + s = string(s, "|" * join(row, "|") * "|\n") + end + s = string(s, "\n") + end + s = replace(s, r"[_$]" => s"\\\g<0>") + return s +end + +txt = create_md() + +open( + "/Users/cbarrows/Documents/repos/PowerSystems.jl/docs/src/modeler_guide/markdown.txt", + "w", +) do f + write(f, txt) +end diff --git a/previews/PR1200/generate_validation_table.jl b/previews/PR1200/generate_validation_table.jl new file mode 100644 index 0000000000..a1598c49b2 --- /dev/null +++ b/previews/PR1200/generate_validation_table.jl @@ -0,0 +1,43 @@ +@info "Generating Validation Table" +function generate_validation_table(filepath::AbstractString) + descriptor = InfrastructureSystems.read_validation_descriptor( + joinpath(PSYPATH, "descriptors", "power_system_structs.json"), + ) + open(filepath, "w") do io + write(io, "# Data Requirements\n\n") + write( + io, + "| Struct Name | Field Name | DataType | Min | Max | Action |\n", + ) + write( + io, + "|---------------|--------------|------------|-------|-------|----------|\n", + ) + for item in descriptor + for field in item["fields"] + write(io, "|$(item["struct_name"])|$(field["name"])|$(field["data_type"])|") + if haskey(field, "valid_range") + if field["valid_range"] isa Dict + valid_min = field["valid_range"]["min"] + valid_max = field["valid_range"]["max"] + for value in (valid_min, valid_max) + write(io, isnothing(value) ? "null" : string(value)) + write(io, "|") + end + else + write(io, "$(field["valid_range"])|$(field["valid_range"])|") + end + else + write(io, "-|-") + end + if haskey(field, "validation_action") + write(io, "$(field["validation_action"])|\n") + else + write(io, "|-\n") + end + end + end + end +end + +generate_validation_table(joinpath(PSYPATH, "../docs/src/man/data_requirements_table.md")) diff --git a/previews/PR1200/how_to/add_component_natural_units/index.html b/previews/PR1200/how_to/add_component_natural_units/index.html new file mode 100644 index 0000000000..ac02dd67b0 --- /dev/null +++ b/previews/PR1200/how_to/add_component_natural_units/index.html @@ -0,0 +1,19 @@ + +...add a component using natural units (MW) · PowerSystems.jl

Add a Component in Natural Units

PowerSystems.jl has three per-unitization options for getting, setting and displaying data.

Currently, only one of these options – "DEVICE_BASE" – is supported when using a constructor function define a component. You can see an example of the default capabilities using "DEVICE_BASE" here.

We hope to add capability to define components in "NATURAL_UNITS" with constructors in the future, but for now, below is a workaround for users who prefer to define data using "NATURAL_UNITS" (e.g., MW, MVA, MVAR, or MW/min):

Step 1: Set Units Base

Set your (previously-defined) System's units base to "NATURAL_UNITS":

julia> set_units_base_system!(system, "NATURAL_UNITS")[ Info: Unit System changed to UnitSystem.NATURAL_UNITS = 2

Now, the "setter" functions have been switched to define data using natural units (MW, MVA, etc.), taking care of the necessary data conversions behind the scenes.

Step 2: Define Empty Component

Define an empty component with 0.0 or nothing for all the power-related fields except base_power, which is always in MVA.

For example:

julia> gas1 = ThermalStandard(;
+           name = "gas1",
+           available = true,
+           status = true,
+           bus = get_component(ACBus, system, "Cobb"), # Attach to a previously-defined bus named Cobb
+           active_power = 0.0,
+           reactive_power = 0.0,
+           rating = 0.0,
+           active_power_limits = (min = 0.0, max = 0.0),
+           reactive_power_limits = nothing,
+           ramp_limits = nothing,
+           operation_cost = ThermalGenerationCost(nothing),
+           base_power = 30.0, # MVA
+           time_limits = (up = 8.0, down = 8.0), # Hours, unaffected by per-unitization
+           must_run = false,
+           prime_mover_type = PrimeMovers.CC,
+           fuel = ThermalFuels.NATURAL_GAS,
+       );

Step 3: Attach the Component

Attach the component to your System:

julia> add_component!(system, gas1)

Step 4: Add Data with "setter" Functions

Use individual "setter" functions to set each the value of each numeric field in natural units:

julia> set_rating!(gas1, 30.0) #MVA1.0
julia> set_active_power_limits!(gas1, (min = 6.0, max = 30.0)) # MW(min = 0.2, max = 1.0)
julia> set_reactive_power_limits!(gas1, (min = 6.0, max = 30.0)) # MVAR(min = 0.2, max = 1.0)
julia> set_ramp_limits!(gas1, (up = 6.0, down = 6.0)) #MW/min(up = 0.2, down = 0.2)

Notice the return values are divided by the base_power of 30 MW, showing the setters have done the per-unit conversion into "DEVICE_BASE" behind the scenes.

Tip

Steps 2-4 can be called within a for loop to define many components at once (or step 3 can be replaced with add_components! to add all components at once).

See Also

diff --git a/previews/PR1200/how_to/add_cost_curve/index.html b/previews/PR1200/how_to/add_cost_curve/index.html new file mode 100644 index 0000000000..fb4874843e --- /dev/null +++ b/previews/PR1200/how_to/add_cost_curve/index.html @@ -0,0 +1,33 @@ + +...add an Operating Cost · PowerSystems.jl

Adding an Operating Cost

This how-to guide covers the steps to select and add an operating cost to a component, such as a generator, load, or energy storage system.

To begin, the user must make 2 or 3 decisions before defining the operating cost:

  1. Select an appropriate OperationalCost from the OperationalCost options. In general, each operating cost has parameters to define fixed and variable costs. To be able to define an OperationalCost, you must first select a curve to represent the variable cost(s).

    1. If you selected ThermalGenerationCost or HydroGenerationCost, select either a FuelCurve or CostCurve to represent the variable cost, based on the units of the generator's data.
      • If you have data in terms of heat rate or water flow, use FuelCurve.
      • If you have data in units of currency, such as $/MWh, use CostCurve. If you selected another OperationalCost type, the variable cost is represented as a CostCurve.
  2. Select a ValueCurve to represent the variable cost data by comparing the format of your variable cost data to the Variable Cost Representations table and the ValueCurve options.

Then, the user defines the cost by working backwards:

  1. Define the variable cost's ValueCurve
  2. Use the ValueCurve to define the selected CostCurve or FuelCurve
  3. Use the CostCurve or FuelCurve to define the OperationalCost

Let's look at a few examples.

Example 1: A Renewable Generator

We have a renewable unit that produces at $22/MWh.

Following the decision steps above:

  1. We select RenewableGenerationCost to represent this renewable generator.
  2. We select a LinearCurve to represent the $22/MWh variable cost.

Following the implementation steps, we define RenewableGenerationCost by nesting the definitions:

julia> RenewableGenerationCost(; variable = CostCurve(; value_curve = LinearCurve(22.0)))RenewableGenerationCost:
+  variable: CostCurve:
+    value_curve: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 22.0 x + 0.0
+    power_units: UnitSystem.NATURAL_UNITS = 2
+    vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0
+  curtailment_cost: CostCurve:
+    value_curve: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0
+    power_units: UnitSystem.NATURAL_UNITS = 2
+    vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0

Example 2: A Thermal Generator

We have a thermal generating unit that has a heat rate of 7 GJ/MWh at 100 MW and 9 GJ/MWh at 200 MW, plus a fixed cost of $6.0/hr, a start-up cost of $2000, and a shut-down cost of $1000. Its fuel cost is $20/GJ.

Following the decision steps above:

  1. We select ThermalGenerationCost to represent this thermal generator.
  2. We select FuelCurve because we have consumption in units of fuel (GJ/MWh) instead of currency.
  3. We select a PiecewisePointCurve to represent the piecewise linear heat rate curve.

This time, we'll define each step individually, beginning with the heat rate curve:

julia> heat_rate_curve = PiecewisePointCurve([(100.0, 7.0), (200.0, 9.0)])PiecewisePointCurve (a type of InputOutputCurve) where function is: piecewise linear y = f(x) connecting points:
+  (x = 100.0, y = 7.0)
+  (x = 200.0, y = 9.0)

Use the heat rate to define the fuel curve, including the cost of fuel:

julia> fuel_curve = FuelCurve(; value_curve = heat_rate_curve, fuel_cost = 20.0)FuelCurve:
+  value_curve: PiecewisePointCurve (a type of InputOutputCurve) where function is: piecewise linear y = f(x) connecting points:
+    (x = 100.0, y = 7.0)
+    (x = 200.0, y = 9.0)
+  power_units: UnitSystem.NATURAL_UNITS = 2
+  fuel_cost: 20.0
+  vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0

Finally, define the full operating cost:

julia> cost = ThermalGenerationCost(;
+           variable = fuel_curve,
+           fixed = 6.0,
+           start_up = 2000.0,
+           shut_down = 1000.0,
+       )ThermalGenerationCost:
+  variable: FuelCurve:
+    value_curve: PiecewisePointCurve (a type of InputOutputCurve) where function is: piecewise linear y = f(x) connecting points:
+      (x = 100.0, y = 7.0)
+      (x = 200.0, y = 9.0)
+    power_units: UnitSystem.NATURAL_UNITS = 2
+    fuel_cost: 20.0
+    vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0
+  fixed: 6.0
+  start_up: 2000.0
+  shut_down: 1000.0

This OperationalCost can be used when defining a component or added to an existing component using set_operation_cost!.

diff --git a/previews/PR1200/how_to/add_new_types/index.html b/previews/PR1200/how_to/add_new_types/index.html new file mode 100644 index 0000000000..573d165646 --- /dev/null +++ b/previews/PR1200/how_to/add_new_types/index.html @@ -0,0 +1,39 @@ + +...customize or add a new Type · PowerSystems.jl

Add a New or Custom Type

This page describes how developers should add types to PowerSystems.jl

Type Hierarchy

All structs that correlate to power system components must be subtypes of the Component abstract type. Browse its type hierachy to choose an appropriate supertype for your new struct.

Interfaces

Refer to the managing components guide for component requirements.

In particular, please note the methods supports_time_series (default = false) and supports_supplemental_attributes (default = true) that you may need to implement.

Note: get_internal and get_name are imported into PowerSystems, so you should implement your methods as PowerSystems methods.

Some abstract types define required interface functions in docstring. Be sure to implement each of them for your new type.

Formalized documentation for each abstract type is TBD.

Specialize an Existing Type

There are scenarios where you may want to make a new type that is identical to an existing type except for one attribute or behavior, and don't want to duplicate the entire existing type and methods. In programming languages that support inheritance you would derive a new class from the existing class and automatically inherit its fields and methods. Julia doesn't support that. However, you can achieve a similar result with a forwarding macro. The basic idea is that you include the existing type within your struct and then use a macro to automatically forward specific methods to that instance.

A few PowerSystems structs use the macro InfrastructureSystems.@forward to do this. Refer to the struct RoundRotorQuadratic for an example of how to use this.

Custom Rules

Some types require special checks before they can be added to or removed from a system. One example is the case where a component includes another component that is also stored in the system. We must ensure that the parent component does not contain a reference to another component that is not already attached to the system.

Similarly, if the child object is removed from the system we must also remove the parent's reference to that child.

The source file src/base.jl provides functions that you can implement for your new type to manage these scenarios.

  • check_component_addition(sys::System, component::Component; kwargs...)
  • handle_component_addition!(sys::System, component::Component; kwargs...)
  • check_component_removal(sys::System, component::Component; kwargs...)
  • handle_component_removal!(sys::System, component::Component; kwargs...)

The functions add_component!() and remove_component!() call the check function before performing actions and then call the handle function afterwards. The default behavior of these functions is to do nothing. Implement versions that take your type in order to add your own checks or perform additional actions.

Beware of the condition where a custom method is already implemented for a supertype of your type.

Note that you can call the helper functions is_attached(component, system) and throw_if_not_attached(component, system).

Custom Validation

You can implement three methods to perform custom validation or correction for your type. PowerSystems calls all of these functions in add_component!.

  • sanitize_component!(component::Component, sys::System): intended to make standard data corrections (e.g. voltage angle in degrees -> radians)
  • validate_component(component::Component): intended to check component field values for internal consistency
  • validate_component_with_system(component::Component, sys::System): intended to check component field values for consistency with system

Struct Requirements for Serialization of custom components

One key feature of PowerSystems.jl is the serialization capabilities. Supporting serialization and de-serialization of custom components requires the implementation of several methods. The serialization code converts structs to dictionaries where the struct fields become dictionary keys.

The code imposes these requirements:

  1. The InfrastructureSystems methods serialize and deserialize must be implemented for the struct. InfrastructureSystems implements a method that covers all subtypes of InfrastructureSystemsType. All PowerSystems components should be subtypes of PowerSystems.Component which is a subtype InfrastructureSystemsType, so any new structs should be covered as well.
  2. All struct fields must be able to be encoded in JSON format or be covered be covered by serialize and deserialize methods. Basic types, such as numbers and strings or arrays and dictionaries of numbers and strings, should just work. Complex containers with symbols may not.
  3. Structs relying on the default deserialize method must have a kwarg-only constructor. The deserialization code constructs objects by splatting the dictionary key/value pairs into the constructor.
  4. Structs that contain other PowerSystem components (like a generator contains a bus) must serialize those components as UUIDs instead of actual values. The deserialization code uses the UUIDs as a mechanism to restore a reference to the actual object rather a new object with identical values. It also significantly reduces the size of the JSON file.

Refer to InfrastructureSystems.serialize_struct for example behavior. New structs that are not subtypes of InfrastructureSystemsType may be able to call it directly.

How to trouble-shoot serialization issues

Here are some examples of potential problems and solutions if you need to implement custom InfrastructureSystems.serialize and InfrastructureSystems.deserialize methods for your type.:

Problem: Your struct contains a field defined as an abstract type. The deserialization process doesn't know what concrete type to construct.

Solution: Encode the concrete type into the serialized dictionary as a string.

Example: serialize and deserialize methods for DynamicBranch in src/models/dynamic_branch.jl.

Problem: Similar to above in that a field is defined as an abstract type but the struct is parameterized on the actual concrete type.

Solution: Use the fact that the concrete type is encoded into the serialized type of the struct and extract it in a customized deserialze method.

Example: deserialize method for OuterControl in src/models/OuterControl.jl.

Adding PowerSystems.jl as a dependency in a modeling package

module MyModelingModule
+
+import PowerSystems
+import InfrastructureSystems
+const PSY = PowerSystems
+const IS = InfrastructureSystems
+
+export MyDevice
+export get_name
+
+mutable struct MyDevice <: PSY.Device
+    name::String
+    internal::IS.InfrastructureSystemsInternal
+end
+
+function MyDevice(name::String)
+    return MyDevice(name, IS.InfrastructureSystemsInternal())
+end
+
+PSY.get_name(val::MyDevice) = val.name
+
+end

Auto-generating Structs

Most PowerSystems.jl structs are auto-generated from the JSON descriptor file src/descriptors/power_system_structs.json. You can add your new struct here or write it manually when contributing code to the repository.

If all you need is the basic struct definition and getter/setter functions then you will likely find the auto-generation helpful.

If you will need to write specialized functions for the type then you will probably want to write it manually.

Please refer to the docstrings for the functions generate_struct and generate_structs. Full details are in the InfrastructureSystems documentation at https://nrel-sienna.github.io/InfrastructureSystems.jl/stable/devguide/autogeneration/.

Testing the addition of new struct to the code base

In order to merge new structs to the code base, your struct needs to pass several tests.

  1. addition to System
  2. retrieval from System
  3. serialization/de-serialization

The following code block is an example of the code that the new struct needs to pass

using PowerSystems
+
+sys = System(100.0)
+device = NewType(data)
+
+# add your component to the system
+add_component!(sys, device)
+retrived_device = get_component(NewType, sys, "component_name")
+
+# Serialize
+to_json(sys, "sys.json")
+
+# Re-create the system and find your component.
+sys2 = System("sys.json")
+serialized_device = get_component(NewType, sys, "component_name")
+
+@test get_name(retrieved_device) == get_name(serialized_device)
diff --git a/previews/PR1200/how_to/adding_additional_fields/index.html b/previews/PR1200/how_to/adding_additional_fields/index.html new file mode 100644 index 0000000000..a24e98b632 --- /dev/null +++ b/previews/PR1200/how_to/adding_additional_fields/index.html @@ -0,0 +1,5 @@ + +...add additional data to a component · PowerSystems.jl

Adding additional data to a component

All PowerSystems.jl components have an ext field that contains an empty Dictionary. This Dictionary is useful to contain additional required data where there is no need to create new behaviors with that data. A simple example is the addition of geographic information, if needed.

Example

Step 1: Use get_ext to get the ext field of the desired components and assign your data:

julia> for g in get_components(ThermalStandard, system)
+           external_field = get_ext(g)
+           external_field["my_data"] = 1.0
+       end

Here, we added additional data called my_data to the ThermalStandard generators in a previously defined System.

Step 2: Retrieve your data using get_ext again

First, retrieve the first ThermalStandard generator:

julia> gen = collect(get_components(ThermalStandard, system))[1];

Then, retrieve my_data from the generator and verify it is 1.0, as assigned.

julia> retrieved_data = get_ext(gen)["my_data"]1.0
diff --git a/previews/PR1200/how_to/get_available_generators/index.html b/previews/PR1200/how_to/get_available_generators/index.html new file mode 100644 index 0000000000..851fd6308a --- /dev/null +++ b/previews/PR1200/how_to/get_available_generators/index.html @@ -0,0 +1,31 @@ + +...get the available generators in a system · PowerSystems.jl

Get the available generators in a System

You can access use get_available_components or get_components to access all the available generators in an existing system.

Option 1a: Using get_available_components to get an iterator

Use get_available_components to get an iterator of all the available generators in an existing system, which also prints a summary:

julia> gen_iter = get_available_components(Generator, system)Generator Counts:
+HydroDispatch: 1
+RenewableDispatch: 29
+RenewableNonDispatch: 31
+ThermalStandard: 54

The iterator avoids unnecessary memory allocations if there are many generators, and it can be used to view or update the generator data, such as seeing each of the names:

julia> get_name.(gen_iter)115-element Vector{String}:
+ "322_CT_6"
+ "321_CC_1"
+ "202_STEAM_3"
+ "223_CT_4"
+ "123_STEAM_2"
+ "213_CT_1"
+ "223_CT_6"
+ "313_CC_1"
+ "101_STEAM_3"
+ "123_CT_1"
+ ⋮
+ "101_PV_3"
+ "319_PV_1"
+ "314_PV_4"
+ "310_PV_1"
+ "215_PV_1"
+ "313_PV_1"
+ "101_PV_4"
+ "119_PV_1"
+ "201_HYDRO_4"
Tip

Above, we use the abstract supertype Generator to get all components that are subtypes of it. You can instead get all the components of a concrete type, such as:

julia> gen_iter = get_available_components(RenewableDispatch, system)RenewableDispatch Counts:
+RenewableDispatch: 29

Option 1b: Using get_available_components to get a vector

Use collect to get a vector of the generators instead of an iterator, which could require a lot of memory:

julia> gens = collect(get_available_components(Generator, system));

Option 2: Using get_components to get an iterator

Alternatively, use get_components with a filter to check for availability:

julia> gen_iter = get_components(get_available, Generator, system)Generator Counts:
+HydroDispatch: 1
+RenewableDispatch: 29
+RenewableNonDispatch: 31
+ThermalStandard: 54

collect can also be used to turn this iterator into a vector.

See Also

diff --git a/previews/PR1200/how_to/get_buses/index.html b/previews/PR1200/how_to/get_buses/index.html new file mode 100644 index 0000000000..cd6e857d4c --- /dev/null +++ b/previews/PR1200/how_to/get_buses/index.html @@ -0,0 +1,82 @@ + +...get all the buses in a system · PowerSystems.jl

Get the buses in a System

You can access all the buses in a System to view or manipulate their data using two key functions: get_components or get_buses.

Option 1a: Get an iterator for all the buses

Use get_components to get an iterator of all the AC buses in an existing system:

julia> bus_iter = get_components(ACBus, system)ACBus Counts:
+ACBus: 73

The iterator avoids unnecessary memory allocations if there are many buses, and it can be used to view or update the bus data. For example, we can set the base voltage of all buses to 330 kV:

julia> for b in bus_iter
+           set_base_voltage!(b, 330.0)
+       end

Option 1b: Get a vector of all the buses

Use collect to get a vector of the buses instead of an iterator, which could require a lot of memory:

julia> buses = collect(get_components(ACBus, system))73-element Vector{ACBus}:
+ ACBus(202, Bacon, ACBusTypes.PV = 2, -0.1877810214196211, 1.04844, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(321, Cobb, ACBusTypes.PV = 2, 0.21539492271297458, 1.05, (min = 0.95, max = 1.05), 330.0, Area(3, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(37.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(322, Cole, ACBusTypes.PV = 2, 0.3153659860038082, 1.05, (min = 0.95, max = 1.05), 330.0, Area(3, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(37.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(102, Adams, ACBusTypes.PV = 2, -0.1364470483941135, 1.04783, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(12.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(117, Aston, ACBusTypes.PQ = 1, 0.19956391373276003, 1.04783, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(17.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(324, Curie, ACBusTypes.PQ = 1, 0.02279504722859714, 1.01046, (min = 0.95, max = 1.05), 330.0, Area(3, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(36.0, 6.109999999999999, 1.23, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(121, Attlee, ACBusTypes.PV = 2, 0.22840303616101354, 1.05, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(17.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(206, Bajer, ACBusTypes.PQ = 1, -0.28198796032281825, 1.03259, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(217, Bates, ACBusTypes.PQ = 1, 0.15390994022494278, 1.04847, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(103, Adler, ACBusTypes.PQ = 1, -0.1258539470320591, 1.01085, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(11.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ⋮
+ ACBus(218, Bayle, ACBusTypes.PV = 2, 0.17444094634785287, 1.05, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(219, Bede, ACBusTypes.PQ = 1, 0.07351902768053274, 1.03946, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(25.0, 3.09, 0.63, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(114, Arnold, ACBusTypes.PV = 2, -0.03020396990331307, 1.04401, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(16.0, 6.109999999999999, 1.23, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(207, Baker, ACBusTypes.PV = 2, -0.23502708427110763, 1.03973, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(214, Barry, ACBusTypes.PV = 2, -0.08177199158151313, 1.04335, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(26.0, 6.109999999999999, 1.23, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(212, Barkla, ACBusTypes.PQ = 1, -0.09168807972671891, 1.01921, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(23.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(113, Arne, ACBusTypes.REF = 3, 0.0, 1.03943, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(14.0, 2.65, 0.54, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(203, Baffin, ACBusTypes.PQ = 1, -0.18281503609892163, 1.01886, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(21.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(112, Archer, ACBusTypes.PQ = 1, -0.042310969858547334, 1.02024, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(13.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())

Option 2a: Get the buses in an Area or LoadZone

Use get_buses to get a vector of buses when you know which Area or LoadZone you are interested in.

First, we select an Area:

julia> show_components(Area, system) # See available AreasArea
+┌──────┐
+│ name │
+├──────┤
+│ 1    │
+│ 2    │
+│ 3    │
+└──────┘
julia> area2 = get_component(Area, system, "2"); # Get Area named 2

Then call get_buses for that Area:

julia> area_buses = get_buses(system, area2)24-element Vector{ACBus}:
+ ACBus(202, Bacon, ACBusTypes.PV = 2, -0.1877810214196211, 1.04844, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(206, Bajer, ACBusTypes.PQ = 1, -0.28198796032281825, 1.03259, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(217, Bates, ACBusTypes.PQ = 1, 0.15390994022494278, 1.04847, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(204, Bailey, ACBusTypes.PQ = 1, -0.23535398444000616, 1.0189, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(21.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(215, Barton, ACBusTypes.PV = 2, 0.08087000542408246, 1.04327, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(26.0, 6.109999999999999, 1.23, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(201, Bach, ACBusTypes.PV = 2, -0.18657098464921346, 1.04841, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(21.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(205, Bain, ACBusTypes.PQ = 1, -0.23757194885344055, 1.03603, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(21.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(222, Bell, ACBusTypes.PV = 2, 0.28679302628648384, 1.05, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(211, Bardeen, ACBusTypes.PQ = 1, -0.12100996022607405, 1.02735, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(23.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(223, Bloch, ACBusTypes.PV = 2, 0.125340994764898, 1.05, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(25.0, 3.09, 0.63, Dict{String, Any}()), Dict{String, Any}())
+ ⋮
+ ACBus(220, Beethoven, ACBusTypes.PQ = 1, 0.09886400094629359, 1.0438, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(25.0, 3.09, 0.63, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(208, Balch, ACBusTypes.PQ = 1, -0.2831550619936269, 1.01203, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(221, Behring, ACBusTypes.PV = 2, 0.1855649768683639, 1.05, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(218, Bayle, ACBusTypes.PV = 2, 0.17444094634785287, 1.05, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(27.0, 3.33, 0.68, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(219, Bede, ACBusTypes.PQ = 1, 0.07351902768053274, 1.03946, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(25.0, 3.09, 0.63, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(207, Baker, ACBusTypes.PV = 2, -0.23502708427110763, 1.03973, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(22.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(214, Barry, ACBusTypes.PV = 2, -0.08177199158151313, 1.04335, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(26.0, 6.109999999999999, 1.23, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(212, Barkla, ACBusTypes.PQ = 1, -0.09168807972671891, 1.01921, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(23.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(203, Baffin, ACBusTypes.PQ = 1, -0.18281503609892163, 1.01886, (min = 0.95, max = 1.05), 330.0, Area(2, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(21.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())

Option 2b: Get buses by ID number

Finally, use get_buses to get a vector of buses by their ID numbers.

Example getting buses with ID numbers from 101 to 110:

julia> buses_by_ID = get_buses(system, Set(101:110))10-element Vector{ACBus}:
+ ACBus(102, Adams, ACBusTypes.PV = 2, -0.1364470483941135, 1.04783, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(12.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(103, Adler, ACBusTypes.PQ = 1, -0.1258539470320591, 1.01085, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(11.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(107, Alder, ACBusTypes.PV = 2, -0.19681606735842017, 1.03745, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(12.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(110, Allen, ACBusTypes.PQ = 1, -0.18536496213608536, 1.05, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(13.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(109, Ali, ACBusTypes.PQ = 1, -0.15385496235350493, 1.0261, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(13.0, 3.7, 0.76, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(108, Alger, ACBusTypes.PQ = 1, -0.23997701256268875, 1.01024, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(12.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(104, Agricola, ACBusTypes.PQ = 1, -0.18441393222667365, 1.01765, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(11.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(105, Aiken, ACBusTypes.PQ = 1, -0.18690504066804514, 1.03568, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(11.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(106, Alber, ACBusTypes.PQ = 1, -0.23176995082103577, 1.03242, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(12.0, 5.29, 1.08, Dict{String, Any}()), Dict{String, Any}())
+ ACBus(101, Abel, ACBusTypes.PV = 2, -0.13511501310899143, 1.04777, (min = 0.95, max = 1.05), 330.0, Area(1, 0.0, 0.0, 0.0, Dict{String, Any}()), LoadZone(11.0, 4.33, 0.88, Dict{String, Any}()), Dict{String, Any}())
Note

You can combine this with Option 1 to first view all the bus numbers if needed:

julia> get_number.(get_components(ACBus, system))73-element Vector{Int64}:
+ 202
+ 321
+ 322
+ 102
+ 117
+ 324
+ 121
+ 206
+ 217
+ 103
+   ⋮
+ 218
+ 219
+ 114
+ 207
+ 214
+ 212
+ 113
+ 203
+ 112

See Also

diff --git a/previews/PR1200/how_to/improve_ts_performance/index.html b/previews/PR1200/how_to/improve_ts_performance/index.html new file mode 100644 index 0000000000..3d0ee78e8c --- /dev/null +++ b/previews/PR1200/how_to/improve_ts_performance/index.html @@ -0,0 +1,49 @@ + +...improve performance with time series data · PowerSystems.jl

Improve Performance with Time Series Data

Use the steps here to improve performance with small or large data sets, but particularly large data sets. These improvements can help handle adding large numbers of data sets or reduce overhead when accessing time series data multiple times.

Choosing the Storage Location

By default, time series data is stored in an HDF5 file in the tmp file system to prevent large datasets from overwhelming system memory. However, you can change its location.

Small data sets

If your dataset will fit in your computer's memory, then you can increase performance by storing it in memory:

sys = System(100.0; time_series_in_memory = true)

Large data sets

If the system's time series data will be larger than the amount of tmp space available, use the time_series_directory parameter to change its location.

sys = System(100.0; time_series_directory = "bigger_directory")

You can also override the location by setting the environment variable SIENNA_TIME_SERIES_DIRECTORY to another directory.

HDF5 compression is not enabled by default, but you can enable it with enable_compression to get significant storage savings at the cost of CPU time. CompressionSettings can be used to customize the HDF5 compression.

sys = System(100.0; enable_compression = true)
+sys = System(
+    100.0;
+    compression = CompressionSettings(;
+        enabled = true,
+        type = CompressionTypes.DEFLATE,  # BLOSC is also supported
+        level = 3,
+        shuffle = true,
+    ),
+)

Adding Timeseries To The System

In order to optimize the storage of time series data, time series can be shared across devices to avoid duplication. If the same forecast applies to multiple components then can call add_time_series!, passing the collection of components that share the time series data. Time series data can also be shared on a component level. Suppose a time series array applies to both the max_active_power and max_reactive_power attributes of a generator. You can share the data.

resolution = Dates.Hour(1)
+data = Dict(
+    DateTime("2020-01-01T00:00:00") => ones(24),
+    DateTime("2020-01-01T01:00:00") => ones(24),
+)
+# Define a Deterministic for the first attribute
+forecast_max_active_power = Deterministic(
+    "max_active_power",
+    data,
+    resolution;
+    scaling_factor_multiplier = get_max_active_power,
+)
+add_time_series!(sys, generator, forecast_max_active_power)
+# Reuse time series for second attribute
+forecast_max_reactive_power = Deterministic(
+    forecast_max_active_power,
+    "max_reactive_power";
+    scaling_factor_multiplier = get_max_reactive_power,
+)
+add_time_series!(sys, generator, forecast_max_reactive_power)

By default, the call to add_time_series! will open the HDF5 file, write the data to the file, and close the file. It will also add a row to an SQLite database. These operations have overhead. If you will add thousands of time series arrays, consider using bulk_add_time_series!. All arrays will be written with one file handle. The bulk SQLite operations are much more efficient. As a fallback option, use open_time_series_store! if timeseries must be added one at a time.

# Assumes `read_time_series` will return data appropriate for Deterministic forecasts
+# based on the generator name and the filenames match the component and time series names.
+resolution = Dates.Hour(1)
+associations = (
+    IS.TimeSeriesAssociation(
+        gen,
+        Deterministic(;
+            data = read_time_series(get_name(gen) * ".csv"),
+            name = "get_max_active_power",
+            resolution = resolution),
+    )
+    for gen in get_components(ThermalStandard, sys)
+)
+bulk_add_time_series!(sys, associations)

Using Forecast Caches for Simulations

Each retrieval of a forecast window from the HDF5 file will involve a small disk read. In the case of production cost modeling or other analyses that access forecast windows repeatedly, this can slow down processes significantly, especially if the underlying storage uses spinning disks.

PowerSystems provides an alternate interface – the forecast cache – that pre-fetches data into the system memory with large reads in order to mitigate this potential problem. It is highly recommended that you use this interface for modeling implementations. This is particularly relevant for models using large datasets. For example:

cache = ForecastCache(Deterministic, component, "max_active_power")
+window1 = get_next_time_series_array!(cache)
+window2 = get_next_time_series_array!(cache)
+# or
+for window in cache
+    @show window
+end

Each iteration of on the cache object will deliver the next forecast window (see get_next_time_series_array!).

diff --git a/previews/PR1200/how_to/install/index.html b/previews/PR1200/how_to/install/index.html new file mode 100644 index 0000000000..15dd53b71d --- /dev/null +++ b/previews/PR1200/how_to/install/index.html @@ -0,0 +1,11 @@ + +...install PowerSystems.jl · PowerSystems.jl

Install PowerSystems.jl

PowerSystems.jl is a command line tool written in the Julia programming language. To install:

Step 1: Install Julia

Follow the instructions here

Step 2: Open Julia

Start the Julia REPL from a command line:

$ julia

You should see the Julia REPL start up, which looks something like this:

               _
+   _       _ _(_)_     |  Documentation: https://docs.julialang.org
+  (_)     | (_) (_)    |
+   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
+  | | | | | | |/ _` |  |
+  | | |_| | | | (_| |  |  Version 1.10.4 (2024-06-04)
+ _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
+|__/                   |
+
+julia>

If not, go back to check the Julia installation steps.

Step 3: Install PowerSystems.jl

Install the latest stable release of PowerSystems.jl using the Julia package manager with:

] add PowerSystems

Once you type ], you will see the prompt change color as it activates the Julia package manager. This command may take a few minutes to download the packages and compile them.

Press the delete or backspace key to return to the REPL.

Install is complete!

Alternate

To use the current development version instead, "checkout" the main branch of this package with:

] add PowerSystems#main
Note

PowerSystems.jl uses InfrastructureSystems.jl as a utility library. Many methods are re-exported from InfrastructureSystems.jl. For most users there is no need to import InfrastructureSystems.jl.

diff --git a/previews/PR1200/how_to/market_bid_cost/index.html b/previews/PR1200/how_to/market_bid_cost/index.html new file mode 100644 index 0000000000..1ab7304d59 --- /dev/null +++ b/previews/PR1200/how_to/market_bid_cost/index.html @@ -0,0 +1,191 @@ + +...add a market bid · PowerSystems.jl

Add a Market Bid

A MarketBidCost is an OperationalCost data structure that allows the user to run a production cost model that is very similar to most US electricity market auctions with bids for energy and ancillary services jointly. This page showcases how to create data for this cost function.

Adding a Single Incremental Energy bids to MarketBidCost

Construct directly the MarketBidCost using the make_market_bid_curve method.

The make_market_bid_curve creates an incremental or decremental offer curve from a vector of n power values, a vector of n-1 marginal costs and single initial input. For example, the following code creates an incremental offer curve:

julia> using PowerSystems, Dates
julia> proposed_offer_curve = + make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0)CostCurve: + value_curve: PiecewiseIncrementalCurve where initial value is 10.0, derivative function f is: f(x) = + 25.0 for x in [0.0, 100.0) + 26.0 for x in [100.0, 105.0) + 28.0 for x in [105.0, 120.0) + 30.0 for x in [120.0, 130.0) + power_units: UnitSystem.NATURAL_UNITS = 2 + vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0

Then a device with MarketBidCost can be directly instantiated using:

julia> using PowerSystems, Dates
julia> bus = ACBus(1, "nodeE", "REF", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing) +ACBus: nodeE: + number: 1 + name: nodeE + bustype: ACBusTypes.REF = 3 + angle: 0.0 + magnitude: 1.0 + voltage_limits: (min = 0.9, max = 1.05) + base_voltage: 230.0 + area: nothing + load_zone: nothing + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal + has_supplemental_attributes: false + has_time_series: false
julia> generator = ThermalStandard(; + name = "Brighton", + available = true, + status = true, + bus = bus, + active_power = 6.0, + reactive_power = 1.50, + rating = 0.75, + prime_mover_type = PrimeMovers.ST, + fuel = ThermalFuels.COAL, + active_power_limits = (min = 0.0, max = 6.0), + reactive_power_limits = (min = -4.50, max = 4.50), + time_limits = (up = 0.015, down = 0.015), + ramp_limits = (up = 5.0, down = 3.0), + operation_cost = MarketBidCost(; + no_load_cost = 0.0, + start_up = (hot = 0.0, warm = 0.0, cold = 0.0), + shut_down = 0.0, + incremental_offer_curves = proposed_offer_curve, + ), + base_power = 100.0, + ) +ThermalStandard: Brighton: + name: Brighton + available: true + status: true + bus: ACBus: nodeE + active_power: 600.0 + reactive_power: 150.0 + rating: 75.0 + active_power_limits: (min = 0.0, max = 600.0) + reactive_power_limits: (min = -450.0, max = 450.0) + ramp_limits: (up = 500.0, down = 300.0) + operation_cost: MarketBidCost composed of incremental_offer_curves: CostCurve{PiecewiseIncrementalCurve} + base_power: 100.0 + time_limits: (up = 0.015, down = 0.015) + must_run: false + prime_mover_type: PrimeMovers.ST = 20 + fuel: ThermalFuels.COAL = 1 + services: 0-element Vector{Service} + time_at_status: 10000.0 + dynamic_injector: nothing + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal + has_supplemental_attributes: false + has_time_series: false

Similarly, a decremental offer curve can also be created directly using the same helper method:

julia> using PowerSystems, Dates
julia> decremental_offer = + make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [30.0, 28.0, 26.0, 25.0], 50.0)CostCurve: + value_curve: PiecewiseIncrementalCurve where initial value is 50.0, derivative function f is: f(x) = + 30.0 for x in [0.0, 100.0) + 28.0 for x in [100.0, 105.0) + 26.0 for x in [105.0, 120.0) + 25.0 for x in [120.0, 130.0) + power_units: UnitSystem.NATURAL_UNITS = 2 + vom_cost: LinearCurve (a type of InputOutputCurve) where function is: f(x) = 0.0 x + 0.0

and can be added to a MarketBidCost using the field decremental_offer_curves.

Adding Time Series Energy bids to MarketBidCost

Step 1: Constructing device with MarketBidCost

When using MarketBidCost, the user can add the cost struct to the device specifying only certain elements, at this point the actual energy cost bids don't need to be populated/passed.

The code below shows an example how we can create a thermal device with MarketBidCost.

julia> using PowerSystems, Dates
julia> bus = ACBus(1, "nodeE", "REF", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing) +ACBus: nodeE: + number: 1 + name: nodeE + bustype: ACBusTypes.REF = 3 + angle: 0.0 + magnitude: 1.0 + voltage_limits: (min = 0.9, max = 1.05) + base_voltage: 230.0 + area: nothing + load_zone: nothing + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal + has_supplemental_attributes: false + has_time_series: false
julia> generator = ThermalStandard(; + name = "Brighton", + available = true, + status = true, + bus = bus, + active_power = 6.0, + reactive_power = 1.50, + rating = 0.75, + prime_mover_type = PrimeMovers.ST, + fuel = ThermalFuels.COAL, + active_power_limits = (min = 0.0, max = 6.0), + reactive_power_limits = (min = -4.50, max = 4.50), + time_limits = (up = 0.015, down = 0.015), + ramp_limits = (up = 5.0, down = 3.0), + operation_cost = MarketBidCost(; + no_load_cost = 0.0, + start_up = (hot = 0.0, warm = 0.0, cold = 0.0), + shut_down = 0.0, + ), + base_power = 100.0, + ) +ThermalStandard: Brighton: + name: Brighton + available: true + status: true + bus: ACBus: nodeE + active_power: 600.0 + reactive_power: 150.0 + rating: 75.0 + active_power_limits: (min = 0.0, max = 600.0) + reactive_power_limits: (min = -450.0, max = 450.0) + ramp_limits: (up = 500.0, down = 300.0) + operation_cost: + base_power: 100.0 + time_limits: (up = 0.015, down = 0.015) + must_run: false + prime_mover_type: PrimeMovers.ST = 20 + fuel: ThermalFuels.COAL = 1 + services: 0-element Vector{Service} + time_at_status: 10000.0 + dynamic_injector: nothing + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal + has_supplemental_attributes: false + has_time_series: false

Step 2: Creating the TimeSeriesData for the Market Bid

The user is expected to pass the TimeSeriesData that holds the energy bid data which can be of any type (i.e. SingleTimeSeries or Deterministic) and data must be PiecewiseStepData. This data type is created by specifying a vector of n powers, and n-1 marginal costs. The data must be specified in natural units, that is power in MW and marginal cost in /MWh or it will not be accepted when adding to the system. Code below shows an example of how to build a Deterministic TimeSeries.

julia> initial_time = Dates.DateTime("2020-01-01")2020-01-01T00:00:00
julia> psd1 = PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [2.901, 5.8272, 8.941])PiecewiseStepData representing step (piecewise constant) function f(x) = + 2.901 for x in [5.0, 7.33) + 5.8272 for x in [7.33, 9.67) + 8.941 for x in [9.67, 12.0)
julia> psd2 = PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [3.001, 6.0072, 9.001])PiecewiseStepData representing step (piecewise constant) function f(x) = + 3.001 for x in [5.0, 7.33) + 6.0072 for x in [7.33, 9.67) + 9.001 for x in [9.67, 12.0)
julia> data = + Dict( + initial_time => [ + psd1, + psd2, + ], + )Dict{Dates.DateTime, Vector{PiecewiseStepData}} with 1 entry: + DateTime("2020-01-01T00:00:00") => [PiecewiseStepData([5.0, 7.33, 9.67, 12.0]…
julia> time_series_data = Deterministic(; + name = "variable_cost", + data = data, + resolution = Dates.Hour(1), + )Deterministic("variable_cost", DataStructures.SortedDict{Dates.DateTime, Vector{PiecewiseStepData}, Base.Order.ForwardOrdering}(Dates.DateTime("2020-01-01T00:00:00") => [PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [2.901, 5.8272, 8.941]), PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [3.001, 6.0072, 9.001])]), Dates.Hour(1), nothing, InfrastructureSystems.InfrastructureSystemsInternal(UUID("5af81913-2dda-425b-858c-ea7e6e1f7733"), nothing, nothing, nothing))

Step 3a: Adding Energy Bid TimeSeriesData to the device

To add energy market bids time-series to the MarketBidCost, use set_variable_cost!. The arguments for set_variable_cost! are:

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • time_series_data::TimeSeriesData: TimeSeriesData
  • power_units::UnitSystem: UnitSystem

Currently, time series data only supports natural units for time series data, i.e. MW for power and /MWh for marginal costs.

julia> sys = System(100.0, [bus], [generator])┌ Warning: There are no ElectricLoad Components in the System
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/utils/IO/system_checks.jl:59
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 2           │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 1     │
+│ ThermalStandard │ 1     │
+└─────────────────┴───────┘
julia> set_variable_cost!(sys, generator, time_series_data, UnitSystem.NATURAL_UNITS)

Note: set_variable_cost! add curves to the incremental_offer_curves in the MarketBidCost. Similarly, set_incremental_variable_cost! can be used to add curves to the incremental_offer_curves. On the other hand, set_decremental_variable_cost! must be used to decremental curves (usually for storage or demand). The creation of the TimeSeriesData is similar to Step 2, using PiecewiseStepData

Step 3b: Adding Service Bid TimeSeriesData to the device

Similar to adding energy market bids, for adding bids for ancillary services, use set_service_bid!.

julia> service = VariableReserve{ReserveUp}("example_reserve", true, 0.6, 2.0)
+VariableReserve: example_reserve:
+   name: example_reserve
+   available: true
+   time_frame: 0.6
+   requirement: 2.0
+   sustained_time: 3600.0
+   max_output_fraction: 1.0
+   max_participation_factor: 1.0
+   deployed_fraction: 0.0
+   ext: Dict{String, Any}()
+   internal: InfrastructureSystems.InfrastructureSystemsInternal
+   has_supplemental_attributes: false
+   has_time_series: false
julia> add_service!(sys, service, get_component(ThermalStandard, sys, "Brighton"))
julia> data = + Dict(Dates.DateTime("2020-01-01") => [650.3, 750.0])Dict{Dates.DateTime, Vector{Float64}} with 1 entry: + DateTime("2020-01-01T00:00:00") => [650.3, 750.0]
julia> time_series_data = Deterministic(; + name = get_name(service), + data = data, + resolution = Dates.Hour(1), + )Deterministic("example_reserve", DataStructures.SortedDict(Dates.DateTime("2020-01-01T00:00:00") => [650.3, 750.0]), Dates.Hour(1), nothing, InfrastructureSystems.InfrastructureSystemsInternal(UUID("327b36a3-cdb9-4eea-b244-0a76ccfb9144"), nothing, nothing, nothing))
julia> set_service_bid!(sys, generator, service, time_series_data, UnitSystem.NATURAL_UNITS)ERROR: TypeError: in set_service_bid!, expected PiecewiseStepData, got Type{Float64}
diff --git a/previews/PR1200/how_to/migrating_to_psy4/index.html b/previews/PR1200/how_to/migrating_to_psy4/index.html new file mode 100644 index 0000000000..98edcfa11f --- /dev/null +++ b/previews/PR1200/how_to/migrating_to_psy4/index.html @@ -0,0 +1,2 @@ + +...migrate from version 3.0 to 4.0 · PowerSystems.jl

Migrating from version 3.0 to 4.0

This guide outlines the code updates required to upgrade from PowerSystems.jl version 3.0 to 4.0, which was released in June 2024 and includes breaking changes. These are:

Renamed Types and Parameters

Some Types and fields were renamed, which should require a trivial search and replace:

Renamed Types:

Renamed parameters:

New and Eliminated Types

In addition to cost-related types detailed in New Cost Functions, these new types have been added:

These types are no longer part of PowerSystems.jl, although there are future plans to rework some of them:

Updates to Energy Storage Parameters

EnergyReservoirStorage is now the default battery and energy storage model, replacing GenericBattery.

There are also changes to the data fields compared to GenericBattery to improve clarity and modeling flexibility.

New data fields:

  • storage_capacity for the maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen)

    • Example: 10000.0 for 10,000 liters hydrogen
  • storage_level_limits for the minimum and maximum allowable storage levels on [0, 1], which can be used to model derates or other restrictions, such as state-of-charge restrictions on battery cycling

    • Example: Minimum of 0.2 and maximum of 1.0 to restrict the storage from dropping below 20% capacity to keep some reserve margin available at all times
  • initial_storage_capacity_level for the initial storage capacity level as a ratio [0, 1.0] of storage_capacity

    • Example: 0.5 to start the storage at 50% full
  • conversion_factor is the (optional) conversion factor of storage_capacity to MWh, if different than 1.0 (i.e., no conversion is needed if the storage_capacity is in MWh)

    • Example: 0.0005 for 0.5 kWh/l hydrogen

Removed data fields:

  • state_of_charge_limits with units of p.u.-hr
  • initial_energy with units of p.u.-hr

Hydropower status added

A new required parameter, status, was added to HydroEnergyReservoir and HydroPumpedStorage, for the initial condition of the generator.

New Cost Functions

New Time Series Horizon Format

The horizon for a forecast has changed from a count of time steps (as an Int) to a duration, as a Dates.Period

Example day-ahead forecast: A forecast with hourly resolution for the next 24 hours, with a new forecast available every 24 hours (i.e., 24-hour interval)

  • The horizon is now Dates.Hour(24) or Dates.Day(1)
  • Previously in version 3.0, the horizon would have been 24 for the 24 1-hour time-steps in each forecast

Example hour-ahead forecast: A forecast with 5-minute resolution for the next 1 hour, with a new forecast available every hour (i.e., 1-hour interval)

  • The horizon is now Dates.Hour(1)
  • Previously in version 3.0, the horizon would have been 12 for the 12 5-minute time-steps in each forecast

Minor Type Hierarchy Change

The vast majority of users are not expected to be impacted by this change.

(Temporary) Use Version 3.0 for HybridSystem (+ new parameter)

The HybridSystem is currently not supported in the rest of the Sienna ecosystem, such as PowerSimulations.jl. To use HybridSystem in simulation, revert to version 3.0. There are plans to update HybridSystem for version 4.0, but they have not been completed.

In addition, HybridSystem has a new required parameter: interconnection_efficiency

diff --git a/previews/PR1200/how_to/parse_dynamic_data/index.html b/previews/PR1200/how_to/parse_dynamic_data/index.html new file mode 100644 index 0000000000..0f7719a9b5 --- /dev/null +++ b/previews/PR1200/how_to/parse_dynamic_data/index.html @@ -0,0 +1,172 @@ + +...parse PSS/e dynamic data · PowerSystems.jl

Parsing PSS/e dynamic data

A PowerSystems.jl system can be created using a .RAW and a .DYR file. In this example we will create a three bus system from these example files:

julia> using PowerSystems
julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
julia> RAW_dir = joinpath(file_dir, "ThreeBusNetwork.raw")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data/ThreeBusNetwork.raw"
julia> DYR_dir = joinpath(file_dir, "TestGENCLS.dyr")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data/TestGENCLS.dyr"

The data in the RAW file defines a three bus system with three generators, three loads and three branches:

0, 100, 33, 0, 0, 60  / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev
+
+
+     101, 'BUS 1       ',       138, 3,    1,    1, 1,           1.02,        0,  1.1,  0.9,  1.1,  0.9
+     102, 'BUS 2       ',       138, 2,    1,    1, 1,           1.0142,           0,  1.1,  0.9,  1.1,  0.9
+     103, 'BUS 3       ',       138, 2,    1,    1, 1,           1.0059,           0,  1.1,  0.9,  1.1,  0.9
+0 / END OF BUS DATA, BEGIN LOAD DATA
+     101,  1, 1,    1,    1,       100,       20, 0, 0, 0, 0, 1, 1, 0
+     102,  1, 1,    1,    1,       70,       10, 0, 0, 0, 0, 1, 1, 0
+     103,  1, 1,    1,    1,       50,       10, 0, 0, 0, 0, 1, 1, 0
+0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
+0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
+     101,  1,       20,         0,       100,      -100,    1.02, 0,     100, 0, 0, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
+     102,  1,       100,         0,       100,      -100,   1.0142, 0,     100, 0, 0.7, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
+     103,  1,       100,         0,       100,      -100,   1.0059, 0,     100, 0, 0.2, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
+0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
+     101,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
+     101,      102, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
+     102,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
+0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA
+0 / END OF TRANSFORMER DATA, BEGIN AREA DATA
+0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA
+0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA
+0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
+0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
+0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
+0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
+0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
+0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
+0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
+0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
+0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
+0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
+0 / END OF INDUCTION MACHINE DATA
+Q

The dynamic data for the generators is provided in the DYR file:

  101 'GENROE' 1   8.000000  0.030000  0.400000  0.050000  6.500000  0.000000  1.800000
+  1.700000  0.300000  0.550000  0.250000  0.200000  0.039200  0.267200  /
+  101 'ESST1A' 1   1  1  0.01  99  -99  1  10  1  1  200  0  4  -4  4  -4  0  0  1  0  3  /
+  102 'GENCLS' 1   0.0   0.0 /
+  103 'GENCLS' 1   3.1   2.0 /

That assigns a GENROU generator and a ESST1A voltage regulator at the generator located at bus 101, while classic machine models for the generators located at bus 102 and 103.

To create the System in PowerSystems.jl, we pass both files directories:

julia> dyn_system = System(RAW_dir, DYR_dir; runchecks = false)[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
+┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:998
+┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:1004
+[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg.
+┌ Info: Constructing System from Power Models
+  data["name"] = "threebusnetwork"
+  data["source_type"] = "pti"
+[ Info: Reading bus data
+[ Info: Reading Load data in PowerModels dict to populate System ...
+[ Info: Reading LoadZones data in PowerModels dict to populate System ...
+[ Info: Reading generator data
+[ Info: Reading branch data
+[ Info: Reading shunt data
+[ Info: Reading DC Line data
+[ Info: Reading storage data
+[ Info: Generators provided in .dyr, without a generator in .raw file will be skipped.
+[ Info: Machine at bus 102, id 1 has zero inertia. Modeling it as Voltage Source
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 19          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 3     │
+│ Arc             │ 3     │
+│ Area            │ 1     │
+│ Line            │ 3     │
+│ LoadZone        │ 1     │
+│ Source          │ 1     │
+│ StandardLoad    │ 3     │
+│ ThermalStandard │ 2     │
+└─────────────────┴───────┘
+
+Dynamic Components
+┌───────────────────────────────────────────────────────────────────────────────
+│ Type                                                                         ⋯
+├───────────────────────────────────────────────────────────────────────────────
+│ DynamicGenerator{BaseMachine, SingleMass, AVRFixed, TGFixed, PSSFixed}       ⋯
+│ DynamicGenerator{RoundRotorExponential, SingleMass, ESST1A, TGFixed, PSSFixe ⋯
+└───────────────────────────────────────────────────────────────────────────────
+                                                               2 columns omitted

Supported PSS/e Models

PSS/e's dynamic model library is extensive, we currently support parsing a limited amount of models out of the box.

Machine modelsAVR ModelsPrime MoversPSS models
GENSAEIEEET1HYGOVIEEEST
GENSALESDC1AIEEEG1
GENROEESAC1AGGOV1
GENCLSESST4B
GENROUEXAC2
EXPIC1
ESAC6A
EXAC1
SCRX
ESDC2A

Common Issue: Unique Bus Names

Please note that while PSS/e does not enforce unique bus names, PowerSystems.jl does. To reparse bus names to comply with this requirement the bus_name_formatter *kwarg can be used in System() as shown in the example below:

julia> dyn_system = System(
+           RAW_dir,
+           DYR_dir;
+           bus_name_formatter = x -> strip(string(x["name"])) * "-" * string(x["index"]),
+       )[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
+┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:998
+┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:1004
+[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg.
+┌ Info: Constructing System from Power Models
+  data["name"] = "threebusnetwork"
+  data["source_type"] = "pti"
+[ Info: Reading bus data
+[ Info: Reading Load data in PowerModels dict to populate System ...
+[ Info: Reading LoadZones data in PowerModels dict to populate System ...
+[ Info: Reading generator data
+[ Info: Reading branch data
+[ Info: Reading shunt data
+[ Info: Reading DC Line data
+[ Info: Reading storage data
+[ Info: Generators provided in .dyr, without a generator in .raw file will be skipped.
+[ Info: Machine at bus 102, id 1 has zero inertia. Modeling it as Voltage Source
+┌ Warning: struct DynamicGenerator does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51
+┌ Warning: struct DynamicGenerator does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 19          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 3     │
+│ Arc             │ 3     │
+│ Area            │ 1     │
+│ Line            │ 3     │
+│ LoadZone        │ 1     │
+│ Source          │ 1     │
+│ StandardLoad    │ 3     │
+│ ThermalStandard │ 2     │
+└─────────────────┴───────┘
+
+Dynamic Components
+┌───────────────────────────────────────────────────────────────────────────────
+│ Type                                                                         ⋯
+├───────────────────────────────────────────────────────────────────────────────
+│ DynamicGenerator{BaseMachine, SingleMass, AVRFixed, TGFixed, PSSFixed}       ⋯
+│ DynamicGenerator{RoundRotorExponential, SingleMass, ESST1A, TGFixed, PSSFixe ⋯
+└───────────────────────────────────────────────────────────────────────────────
+                                                               2 columns omitted

In this example the anonymous function x -> strip(string(x["name"])) * "-" * string(x["index"]) takes the bus name and index from PSSe and concatenates them to produce the name.

See also:

diff --git a/previews/PR1200/how_to/parse_matpower_psse/index.html b/previews/PR1200/how_to/parse_matpower_psse/index.html new file mode 100644 index 0000000000..c306209b84 --- /dev/null +++ b/previews/PR1200/how_to/parse_matpower_psse/index.html @@ -0,0 +1,48 @@ + +...parse data from MATPOWER or PSS/e files · PowerSystems.jl

Parsing MATPOWER or PSS/e Files

The following code will create a System from a MATPOWER .m or PSS/e .raw file:

julia> using PowerSystems
julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
julia> sys = System(joinpath(file_dir, "case5.m"))[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +┌ Info: Constructing System from Power Models + data["name"] = "nesta_case5_pjm" + data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading shunt data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 28 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┐ +│ Type │ Count │ +├──────────────────────────┼───────┤ +│ ACBus │ 5 │ +│ Arc │ 6 │ +│ Area │ 1 │ +│ Line │ 5 │ +│ LoadZone │ 1 │ +│ PhaseShiftingTransformer │ 2 │ +│ PowerLoad │ 3 │ +│ ThermalStandard │ 5 │ +└──────────────────────────┴───────┘

This parsing code was copied with permission from PowerModels.jl.

See also:

diff --git a/previews/PR1200/how_to/parse_tabular_data/index.html b/previews/PR1200/how_to/parse_tabular_data/index.html new file mode 100644 index 0000000000..e892f1e4fa --- /dev/null +++ b/previews/PR1200/how_to/parse_tabular_data/index.html @@ -0,0 +1,18 @@ + +...parse tabular data from .csv files · PowerSystems.jl

Parse Tabular Data from .csv Files

Warning

This parser will be deprecated sometime in the fall of 2024. PowerSystems.jl will be moving to a database solution for handling data. There are plans to eventually include utility functions to translate from .csv files to the database, but there will probably be a gap in support. Users are recommended to write their own custom Julia code to import data from their unique data formats, rather than relying on this parsing code.

This parser, called the tabular data parser, is a custom format that allows users to define power system component data by category and column with custom names, types, and units.

Categories

Components for each category must be defined in their own CSV file. The following categories are currently supported:

  • branch.csv

  • bus.csv (required)

    • columns specifying area and zone will create a corresponding set of Area and LoadZone objects.
    • columns specifying max_active_power or max_reactive_power will create PowerLoad objects when nonzero values are encountered and will contribute to the peak_active_power and peak_reactive_power values for the corresponding LoadZone object.
  • dc_branch.csv

  • gen.csv

  • load.csv

  • reserves.csv

  • storage.csv

These must reside in the directory passed when constructing PowerSystemTableData.

Customization

The tabular data parser in PowerSystems.jl can be customized to read a variety of datasets by configuring:

Here is an example of how to construct a System with all customizations listed in this section:

data_dir = "/data/my-data-dir"
+base_power = 100.0
+descriptors = "./user_descriptors.yaml"
+timeseries_metadata_file = "./timeseries_pointers.json"
+generator_mapping_file = "./generator_mapping.yaml"
+data = PowerSystemTableData(
+    data_dir,
+    base_power,
+    descriptors;
+    timeseries_metadata_file = timeseries_metadata_file,
+    generator_mapping_file = generator_mapping_file,
+)
+sys = System(data; time_series_in_memory = true)

Examples configuration files can be found in the RTS-GMLC repo:

CSV Data Configurations

Custom construction of generators

PowerSystems supports custom construction of subtypes of the abstract type Generator based on fuel and type. The parsing code detects these fields in the raw data and then constructs the concrete type listed in the passed generator mapping file. The default file is src/parsers/generator_mapping.yaml. You can override this behavior by specifying your own file when constructing PowerSystemTableData.

Column names

PowerSystems provides am input mapping capability that allows you to keep your own column names.

For example, when parsing raw data for a generator the code expects a column called name. If the raw data instead defines that column as GEN UID then you can change the custom_name field under the generator category to GEN UID in your YAML file.

To enable the parsing of a custom set of csv files, you can generate a configuration file (such as user_descriptors.yaml) from the defaults, which are stored in src/descriptors/power_system_inputs.json.

python ./bin/generate_config_file.py ./user_descriptors.yaml

Next, edit this file with your customizations.

Note that the user-specific customizations are stored in YAML rather than JSON to allow for easier editing. The next few sections describe changes you can make to this YAML file. Do not edit the default JSON file.

Per-unit conversion

For more info on the per-unit conventions in PowerSystems.jl, refer to the per-unit section of the system documentation.

PowerSystems defines whether it expects a column value to be per-unit system base, per-unit device base, or natural units in power_system_inputs.json. If it expects a per-unit convention that differs from your values then you can set the unit_system in user_descriptors.yaml and PowerSystems will automatically convert the values. For example, if you have a max_active_power value stored in natural units (MW), but power_system_inputs.json specifies unit_system: device_base, you can enter unit_system: natural_units in user_descriptors.yaml and PowerSystems will divide the value by the value of the corresponding entry in the column identified by the base_reference field in power_system_inputs.json. You can also override the base_reference setting by adding base_reference: My Column to make device base per-unit conversion by dividing the value by the entry in My Column. System base per-unit conversions always divide the value by the system base_power value instantiated when constructing a System.

Unit conversion

PowerSystems provides a limited set of unit conversions. For example, if power_system_inputs.json indicates that a value's unit is degrees but your values are in radians then you can set unit: radian in your YAML file. Other valid unit entries include GW, GWh, MW, MWh, kW, and kWh.

Extending the Tabular Data Parser

This section describes how developers should read columns from raw data files, and assumes you are familiar with the sections above.

The main point is that you should not read individual hard-coded column names from DataFrames. The parsing code includes mapping functionality that allows you to use PowerSystems-standard names while letting the users define their own custom names.

Procedure

  1. Add an entry to the array of parameters for your category in src/descriptors/power_system_inputs.json according to the following:

    1. Use snake_case for the name field.
    2. The fields name and description are required.
    3. Try to use a name that is generic and not specific to one dataset.
    4. It is recommended that you define unit.
    5. If PowerSystems expects the value to be per-unit then you must specify system_per_unit=true.
  2. PowerSystems has two commonly-used datasets with customized user config files: PowerSystemsTestData and RTS_GMLC. Update both of these files and submit pull requests.

  3. Parse the raw data like in this example:

function demo_bus_csv_parser!(data::PowerSystemTableData)
+    for bus in iterate_rows(data, BUS::InputCategory)
+        @show bus.name, bus.max_active_power, bus.max_reactive_power
+    end
+end

iterate_rows returns a NamedTuple where each name defined in src/descriptors/power_system_inputs.json is a field.

See also:

diff --git a/previews/PR1200/how_to/parse_ts_from_csvs/index.html b/previews/PR1200/how_to/parse_ts_from_csvs/index.html new file mode 100644 index 0000000000..dde6d1699f --- /dev/null +++ b/previews/PR1200/how_to/parse_ts_from_csvs/index.html @@ -0,0 +1,133 @@ + +...parse time series data from .csv files · PowerSystems.jl

Parse Time Series Data from .csv's

This example shows how to parse time series data from .csv files to add to a System. For example, a System created by parsing a MATPOWER file doesn't contain any time series data, so a user may want to add time series to be able to run a production cost model.

Let's use a predefined 5-bus System with some renewable generators and loads that we want to add time-series data to:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 30          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌──────────────────────────┬───────┐
+│ Type                     │ Count │
+├──────────────────────────┼───────┤
+│ ACBus                    │ 5     │
+│ Arc                      │ 6     │
+│ Area                     │ 1     │
+│ Line                     │ 5     │
+│ LoadZone                 │ 1     │
+│ PhaseShiftingTransformer │ 2     │
+│ PowerLoad                │ 3     │
+│ RenewableDispatch        │ 2     │
+│ ThermalStandard          │ 5     │
+└──────────────────────────┴───────┘

Define pointers to time series files

PowerSystems requires a metadata file that maps components to their time series data in order to be able to automatically construct time_series from .csv data files.

For example, if we want to add a bunch of time series files, say one for each load and one for each renewable generator, we need to define pointers to each time series .csv file with the following fields:

  • simulation: User description of simulation
  • resolution: Resolution of time series in seconds
  • module: Module that defines the abstract type of the component
  • category: Type of component. Must map to abstract types defined by the "module" entry (Bus, ElectricLoad, Generator, LoadZone, Reserve)
  • component_name: Name of component
  • name: User-defined name for the time series data.
  • normalization_factor: Controls normalization of the data. Use 1.0 for pre-normalized data. Use 'Max' to divide the time series by the max value in the column. Use any float for a custom scaling factor.
  • scaling_factor_multiplier_module: Module that defines the accessor function for the scaling factor
  • scaling_factor_multiplier: Accessor function of the scaling factor
  • data_file: Path to the time series data file

Notes:

  • The module, category, and component_name entries must be valid arguments to retrieve a component using get_component(${module}.${category}, sys, $name).
  • The scaling_factor_multiplier_module and the scaling_factor_multiplier entries must be sufficient to return the scaling factor data using ${scaling_factor_multiplier_module}.${scaling_factor_multiplier}(component).

PowerSystems supports this metadata in either CSV or JSON formats.

In this example, we will use the JSON format. The example file can be found here, and this is what its pointers look like in the required format:

[
+    {
+        "simulation": "DAY_AHEAD",
+        "resolution": 3600,
+        "category": "Generator",
+        "component_name": "SolarBusC",
+        "module": "PowerSystems",
+        "type": "SingleTimeSeries",
+        "name": "max_active_power",
+        "scaling_factor_multiplier": "get_max_active_power",
+        "scaling_factor_multiplier_module": "PowerSystems",
+        "normalization_factor": 1,
+        "data_file": "./gen/Renewable/PV/da_solar5.csv"
+    },
+    {
+        "simulation": "DAY_AHEAD",
+        "resolution": 3600,
+        "category": "Generator",
+        "component_name": "WindBusA",
+        "module": "PowerSystems",
+        "type": "SingleTimeSeries",
+        "name": "max_active_power",
+        "scaling_factor_multiplier": "get_max_active_power",
+        "scaling_factor_multiplier_module": "PowerSystems",
+        "normalization_factor": 1,
+        "data_file": "./gen/Renewable/WIND/da_wind5.csv"
+    },
+    {
+        "simulation": "DAY_AHEAD",
+        "resolution": 3600,
+        "category": "ElectricLoad",
+        "component_name": "bus2",
+        "module": "PowerSystems",
+        "type": "SingleTimeSeries",
+        "name": "max_active_power",
+        "scaling_factor_multiplier": "get_max_active_power",
+        "scaling_factor_multiplier_module": "PowerSystems",
+        "normalization_factor": 1,
+        "data_file": "./load/da_load5.csv"
+    },
+    {
+        "simulation": "DAY_AHEAD",
+        "resolution": 3600,
+        "category": "ElectricLoad",
+        "component_name": "bus3",
+        "module": "PowerSystems",
+        "type": "SingleTimeSeries",
+        "name": "max_active_power",
+        "scaling_factor_multiplier": "get_max_active_power",
+        "scaling_factor_multiplier_module": "PowerSystems",
+        "normalization_factor": 1,
+        "data_file": "./load/da_load5.csv"
+    },
+    {
+        "simulation": "DAY_AHEAD",
+        "resolution": 3600,
+        "category": "ElectricLoad",
+        "component_name": "bus4",
+        "module": "PowerSystems",
+        "type": "SingleTimeSeries",
+        "name": "max_active_power",
+        "scaling_factor_multiplier": "get_max_active_power",
+        "scaling_factor_multiplier_module": "PowerSystems",
+        "normalization_factor": 1,
+        "data_file": "./load/da_load5.csv"
+    }
+]

Read and assign time series to System using these parameters.

julia> fname = joinpath(FORECASTS_DIR, "timeseries_pointers_da.json")"/home/runner/.julia/artifacts/afb608473cf4d5eb22147856de1a1a651f36d40b/PowerSystemsTestData-3.1/5-Bus/5bus_ts/timeseries_pointers_da.json"
julia> add_time_series!(sys, fname)5-element Vector{TimeSeriesKey}: + StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2024-10-07T00:00:00"), Dates.Millisecond(3600000), 24, Dict{String, Any}()) + StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2024-10-07T00:00:00"), Dates.Millisecond(3600000), 24, Dict{String, Any}()) + StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2024-10-07T00:00:00"), Dates.Millisecond(3600000), 24, Dict{String, Any}()) + StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2024-10-07T00:00:00"), Dates.Millisecond(3600000), 24, Dict{String, Any}()) + StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2024-10-07T00:00:00"), Dates.Millisecond(3600000), 24, Dict{String, Any}())

You can print the System to see a new table summarizing the time series data that has been added:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 30          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌──────────────────────────┬───────┐
+│ Type                     │ Count │
+├──────────────────────────┼───────┤
+│ ACBus                    │ 5     │
+│ Arc                      │ 6     │
+│ Area                     │ 1     │
+│ Line                     │ 5     │
+│ LoadZone                 │ 1     │
+│ PhaseShiftingTransformer │ 2     │
+│ PowerLoad                │ 3     │
+│ RenewableDispatch        │ 2     │
+│ ThermalStandard          │ 5     │
+└──────────────────────────┴───────┘
+
+Time Series Summary
+┌───────────────────┬────────────────┬──────────────────┬───────────────────────
+│ owner_type        │ owner_category │ time_series_type │ time_series_category ⋯
+│ String            │ String         │ String           │ String               ⋯
+├───────────────────┼────────────────┼──────────────────┼───────────────────────
+│ PowerLoad         │ Component      │ SingleTimeSeries │ StaticTimeSeries     ⋯
+│ RenewableDispatch │ Component      │ SingleTimeSeries │ StaticTimeSeries     ⋯
+└───────────────────┴────────────────┴──────────────────┴───────────────────────
+                                                               3 columns omitted

See also:

diff --git a/previews/PR1200/how_to/powersystembuilder/index.html b/previews/PR1200/how_to/powersystembuilder/index.html new file mode 100644 index 0000000000..037e677547 --- /dev/null +++ b/previews/PR1200/how_to/powersystembuilder/index.html @@ -0,0 +1,272 @@ + +...load a system from PowerSystemCaseBuilder · PowerSystems.jl

Load a system from PowerSystemCaseBuilder

Originally Contributed by: Clayton Barrows

Introduction

PowerSystemCaseBuilder.jl provides a utility to manage a library of Systems. The package has utilities to list the available system data and to create instances of each system. By keeping track of which systems have been constructed locally, it makes the re-instantiation of systems efficient by utilizing the serialization features and avoiding the parsing process for systems that have been previously constructed.

Dependencies

julia> using PowerSystemCaseBuilder

List all systems in library

julia> show_systems()
+Category: PowerSystemCaseBuilder.MatpowerTestSystems
+
+┌──────────────────────────────┬───────────────────────────────────┐
+│ Name                         │ Descriptor                        │
+├──────────────────────────────┼───────────────────────────────────┤
+│ matpower_ACTIVSg10k_sys      │ ACTIVSg10k Test system            │
+│ matpower_ACTIVSg2000_sys     │ MATPOWER ACTIVSg2000 Test system  │
+│ matpower_RTS_GMLC_sys        │ Matpower RTS-GMLC Test system     │
+│ matpower_case14_sys          │ Matpower Test system              │
+│ matpower_case24_sys          │ Matpower Test system              │
+│ matpower_case2_sys           │ Matpower Test system              │
+│ matpower_case30_sys          │ Matpower Test system              │
+│ matpower_case3_tnep_sys      │ Matpower Test system              │
+│ matpower_case5_asym_sys      │ Matpower Test system              │
+│ matpower_case5_dc_sys        │ Matpower Test system              │
+│ matpower_case5_gap_sys       │ Matpower Test system              │
+│ matpower_case5_pwlc_sys      │ Matpower Test system              │
+│ matpower_case5_re_sys        │ Matpower Test system              │
+│ matpower_case5_re_uc_pwl_sys │ Matpower Test system              │
+│ matpower_case5_re_uc_sys     │ Matpower Test system              │
+│ matpower_case5_strg_sys      │ Matpower Test system              │
+│ matpower_case5_sys           │ Matpower Test system              │
+│ matpower_case5_tnep_sys      │ Matpower Test system              │
+│ matpower_case6_sys           │ Matpower Test system              │
+│ matpower_case7_tplgy_sys     │ Matpower Test system              │
+│ matpower_frankenstein_00_sys │ Matpower Frankenstein Test system │
+└──────────────────────────────┴───────────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSIDSystems
+
+┌───────────────────────────────────────┬──────────────────────────────────────────────────────────┐
+│ Name                                  │ Descriptor                                               │
+├───────────────────────────────────────┼──────────────────────────────────────────────────────────┤
+│ 14 Bus Base Case                      │ 14 Bus Dynamic Test System Case                          │
+│ 2 Bus Load Tutorial                   │ 2 Bus Base System for load tutorials                     │
+│ 2 Bus Load Tutorial Droop             │ 2 Bus Base System for load tutorials with Droop Inverter │
+│ 2 Bus Load Tutorial GENROU            │ 2 Bus Base System for load tutorials with GENROU         │
+│ 3 Bus Inverter Base                   │ 3 Bus Base System for tutorials                          │
+│ OMIB System                           │ OMIB case with 2 state machine for examples              │
+│ Three Bus Dynamic data Example System │ Three Bus case for examples                              │
+│ WECC 240 Bus                          │ WECC 240 Bus case dynamic data with some modifications   │
+│ WECC 9 Bus                            │ WECC 9 Bus System with dynamic gens from Sauer and Pai   │
+│ psid_11bus_andes                      │ PSID 11-bus Kundur System compared against Andes         │
+│ psid_4bus_multigen                    │ PSID Multiple Generators in Single-Bus Test Case         │
+└───────────────────────────────────────┴──────────────────────────────────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSIDTestSystems
+
+┌──────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────┐
+│ Name                                     │ Descriptor                                                                           │
+├──────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
+│ psid_psse_test_avr                       │ PSID AVR Test Cases for PSSE Validation                                              │
+│ psid_psse_test_constantI_load            │ PSID Constant Current Load Test Case                                                 │
+│ psid_psse_test_constantP_load            │ PSID Constant Power Load Test Case                                                   │
+│ psid_psse_test_exp_load                  │ PSID Exponential Load Test Case                                                      │
+│ psid_psse_test_gen                       │ PSID GEN Test Cases for PSSE Validation                                              │
+│ psid_psse_test_pss                       │ PSID PSS Test Cases for PSSE Validation                                              │
+│ psid_psse_test_tg                        │ PSID TG Test Cases for PSSE Validation                                               │
+│ psid_test_3rd_indmotor                   │ PSID System with 3rd-order Induction Motor Test Case                                 │
+│ psid_test_5th_indmotor                   │ PSID System with 5th-order Induction Motor Test Case                                 │
+│ psid_test_droop_inverter                 │ PSID Two Bus Droop GFM Inverter Test Case                                            │
+│ psid_test_gfoll_inverter                 │ PSID Two Bus Grid Following Inverter Test Case                                       │
+│ psid_test_ieee_9bus                      │ PSID IEEE 9-bus system with Anderson-Fouad Machine Test Case                         │
+│ psid_test_indmotor                       │ PSID System without Induction Motor Test Case                                        │
+│ psid_test_omib                           │ PSID OMIB Test Case                                                                  │
+│ psid_test_pvs                            │ PSID OMIB with Periodic Variable Source Test Case                                    │
+│ psid_test_threebus_5shaft                │ PSID Three Bus 5-shaft Test Case                                                     │
+│ psid_test_threebus_anderson              │ PSID Three Bus Anderson-Fouad Test Case                                              │
+│ psid_test_threebus_genrou_avr            │ PSID Three Bus GENROU with PSAT AVRs Test Case                                       │
+│ psid_test_threebus_machine_vsm           │ PSID Three Bus One-d-One-q Machine against VSM Inverter Test Case                    │
+│ psid_test_threebus_machine_vsm_dynlines  │ PSID Three Bus One-d-One-q Machine against VSM Inverter Test Case with Dynamic Lines │
+│ psid_test_threebus_marconato             │ PSID Three Bus Simple Marconato Test Case                                            │
+│ psid_test_threebus_multimachine          │ PSID Three Bus Multi-Machine Test Case                                               │
+│ psid_test_threebus_multimachine_dynlines │ PSID Three Bus Multi-Machine with Dynamic Lines Test Case                            │
+│ psid_test_threebus_oneDoneQ              │ PSID Three Bus One-d-One-q Test Case                                                 │
+│ psid_test_threebus_psat_avrs             │ PSID Three Bus TG Type I and AVR Type II Test Case                                   │
+│ psid_test_threebus_simple_anderson       │ PSID Three Bus Simple Anderson-Fouad Test Case                                       │
+│ psid_test_threebus_simple_marconato      │ PSID Three Bus Simple Marconato Test Case                                            │
+│ psid_test_threebus_vsm_reference         │ PSID Three Bus Inverter Reference Test Case                                          │
+│ psid_test_vsm_inverter                   │ PSID Two Bus D'Arco VSM Inverter Test Case                                           │
+└──────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSISystems
+
+┌─────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ Name                                │ Descriptor                                                                                                                            │
+├─────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
+│ 2Area 5 Bus System                  │ PSI test system with two areas connected with an HVDC Line                                                                            │
+│ 5_bus_hydro_ed_sys                  │ 5-Bus hydro economic dispatch data                                                                                                    │
+│ 5_bus_hydro_ed_sys_with_targets     │ 5-Bus hydro economic dispatch data with energy targets                                                                                │
+│ 5_bus_hydro_uc_sys                  │ 5-Bus hydro unit commitment data                                                                                                      │
+│ 5_bus_hydro_uc_sys_with_targets     │ 5-Bus hydro unit commitment data with energy targets                                                                                  │
+│ 5_bus_hydro_wk_sys                  │ 5-Bus hydro system for weekly dispatch                                                                                                │
+│ 5_bus_hydro_wk_sys_with_targets     │ 5-Bus hydro system for weekly dispatch with energy targets                                                                            │
+│ 5_bus_matpower_AGC                  │ matpower 5-Bus system with AGC time series                                                                                            │
+│ 5_bus_matpower_DA                   │ matpower 5-Bus system with DA time series                                                                                             │
+│ 5_bus_matpower_RT                   │ matpower 5-Bus system with RT time series                                                                                             │
+│ AC_TWO_RTO_RTS_1Hr_sys              │ Two Area RTO System Connected via AC with 1-hour resolution                                                                           │
+│ AC_TWO_RTO_RTS_5min_sys             │ Two Area RTO System Connected via AC with 5-min resolution                                                                            │
+│ HVDC_TWO_RTO_RTS_1Hr_sys            │ Two Area RTO System Connected via HVDC with 1-hour resolution                                                                         │
+│ HVDC_TWO_RTO_RTS_5min_sys           │ Two Area RTO System Connected via HVDC with 5-min resolution                                                                          │
+│ MTHVDC_two_RTS_DA_sys_noForecast    │ Two RTS systems connected by two multi-terminal HVDC systems                                                                          │
+│ RTS_GMLC_DA_sys                     │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
+│ RTS_GMLC_DA_sys_noForecast          │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
+│ RTS_GMLC_RT_sys                     │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
+│ RTS_GMLC_RT_sys_noForecast          │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
+│ c_sys5_pjm                          │ 5-Bus system                                                                                                                          │
+│ c_sys5_pjm_rt                       │ 5-Bus system                                                                                                                          │
+│ modified_RTS_GMLC_DA_sys            │ Modified RTS-GMLC Full system for day-ahead simulations\n            with modifications to reserve definitions to improve feasibility │
+│ modified_RTS_GMLC_DA_sys_noForecast │ Modified RTS-GMLC Full system for day-ahead simulations\n            with modifications to reserve definitions to improve feasibility │
+│ modified_RTS_GMLC_RT_sys            │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
+│ modified_RTS_GMLC_RT_sys_noForecast │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
+│ modified_RTS_GMLC_realization_sys   │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
+│ sys10_pjm_ac_dc                     │ 10-bus system (duplicate 5-bus PJM) with 4-DC bus system                                                                              │
+│ two_area_pjm_DA                     │ 2 Area 5-Bus system                                                                                                                   │
+└─────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSITestSystems
+
+┌────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ Name                           │ Descriptor                                                                                                        │
+├────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
+│ batt_test_case_b_sys           │ test system for Storage Energy Target formulation(case-b)                                                         │
+│ batt_test_case_c_sys           │ test system for Storage Energy Target formulation(case-c)                                                         │
+│ batt_test_case_d_sys           │ test system for Storage Energy Target formulation(case-d)                                                         │
+│ batt_test_case_e_sys           │ test system for Storage Energy Target formulation(case-e)                                                         │
+│ batt_test_case_f_sys           │ test system for Storage Energy Target formulation(case-f)                                                         │
+│ c_duration_test                │ 1 Bus for duration testing                                                                                        │
+│ c_fixed_market_bid_cost        │ 1 bus system with a Fixed MarketBidCost Model                                                                     │
+│ c_linear_cost_test             │ 1 Bus linear cost for testing                                                                                     │
+│ c_linear_fuel_test             │ 1 Bus linear fuel curve testing                                                                                   │
+│ c_linear_fuel_test_ts          │ 1 Bus linear fuel curve testing                                                                                   │
+│ c_market_bid_cost              │ 1 bus system with MarketBidCost Model                                                                             │
+│ c_non_convex_io_pwl_cost_test  │ 1 Bus PWL sos testing                                                                                             │
+│ c_pwl_incremental_cost_test    │ 1 Bus PWL incremental cost curve testing                                                                          │
+│ c_pwl_incremental_fuel_test    │ 1 Bus PWL incremental (marginal) fuel curve testing                                                               │
+│ c_pwl_incremental_fuel_test_ts │ 1 Bus PWL incremental (marginal) fuel curve testing                                                               │
+│ c_pwl_io_cost_test             │ 1 Bus PWL I/O cost curve testing                                                                                  │
+│ c_pwl_io_fuel_test             │ 1 Bus PWL I/O fuel curve testing                                                                                  │
+│ c_pwl_io_fuel_test_ts          │ 1 Bus PWL I/O fuel curve testing                                                                                  │
+│ c_quadratic_cost_test          │ 1 Bus quadratic cost for testing                                                                                  │
+│ c_quadratic_fuel_test          │ 1 Bus quadratic fuel curve testing                                                                                │
+│ c_quadratic_fuel_test_ts       │ 1 Bus quadratic fuel curve testing                                                                                │
+│ c_ramp_test                    │ 1-bus for ramp testing                                                                                            │
+│ c_sys14                        │ 14-bus system                                                                                                     │
+│ c_sys14_dc                     │ 14-bus system with DC line                                                                                        │
+│ c_sys5                         │ 5-Bus system                                                                                                      │
+│ c_sys5_all_components          │ 5-Bus system with 5-Bus system with Renewable Energy, Hydro Energy Reservoir, and both StandardLoad and PowerLoad │
+│ c_sys5_bat                     │ 5-Bus system with Storage Device                                                                                  │
+│ c_sys5_bat_ems                 │ 5-Bus system with Storage Device with EMS                                                                         │
+│ c_sys5_dc                      │ Systems with HVDC data in the branches                                                                            │
+│ c_sys5_ed                      │ 5-Bus System for Economic Dispatch Simulations                                                                    │
+│ c_sys5_hy                      │ 5-Bus system with HydroDispatch                                                                                   │
+│ c_sys5_hy_ed                   │ 5-Bus system with Hydro-Power for Economic Dispatch Simulations                                                   │
+│ c_sys5_hy_ems_ed               │ 5-Bus system with Hydro-Power for Economic Dispatch Simulations                                                   │
+│ c_sys5_hy_ems_uc               │ 5-Bus system with Hydro-Power for Unit Commitment Simulations                                                     │
+│ c_sys5_hy_uc                   │ 5-Bus system with Hydro-Power for Unit Commitment Simulations                                                     │
+│ c_sys5_hybrid                  │ 5-Bus system with Hybrid devices                                                                                  │
+│ c_sys5_hybrid_ed               │ 5-Bus system with Hybrid devices and thermal devices for ED.                                                      │
+│ c_sys5_hybrid_uc               │ 5-Bus system with Hybrid devices and thermal UC devices                                                           │
+│ c_sys5_hyd                     │ 5-Bus system with Hydro Energy Reservoir                                                                          │
+│ c_sys5_hyd_ems                 │ 5-Bus system with Hydro Energy Reservoir                                                                          │
+│ c_sys5_il                      │ System with Interruptible Load                                                                                    │
+│ c_sys5_ml                      │ Test System with Monitored Line                                                                                   │
+│ c_sys5_pglib                   │ 5-Bus with ThermalMultiStart                                                                                      │
+│ c_sys5_pglib_sim               │ 5-Bus with ThermalMultiStart for simulation                                                                       │
+│ c_sys5_phes_ed                 │ 5-Bus system with Hydro Pumped Energy Storage for Economic Dispatch Simulations                                   │
+│ c_sys5_pwl_ed                  │ 5-Bus with pwl cost function                                                                                      │
+│ c_sys5_pwl_ed_nonconvex        │ 5-Bus with SOS cost function for Economic Dispatch Simulations                                                    │
+│ c_sys5_pwl_uc                  │ 5-Bus with SOS cost function for Unit Commitment Simulations                                                      │
+│ c_sys5_radial                  │ 5-Bus with a radial branches                                                                                      │
+│ c_sys5_re                      │ 5-Bus system with Renewable Energy                                                                                │
+│ c_sys5_re_only                 │ 5-Bus system with only Renewable Energy                                                                           │
+│ c_sys5_uc                      │ 5-Bus system for Unit Commitment Simulations                                                                      │
+│ c_sys5_uc_non_spin             │ 5-Bus system for Unit Commitment with Non-Spinning Reserve Simulations                                            │
+│ c_sys5_uc_re                   │ 5-Bus system for Unit Commitment Simulations with Renewable Units                                                 │
+│ hydro_test_case_b_sys          │ test system for HydroGen Energy Target formulation(case-b)                                                        │
+│ hydro_test_case_c_sys          │ test system for HydroGen Energy Target formulation(case-c)                                                        │
+│ hydro_test_case_d_sys          │ test system for HydroGen Energy Target formulation(case-d)                                                        │
+│ hydro_test_case_e_sys          │ test system for HydroGen Energy Target formulation(case-e)                                                        │
+│ hydro_test_case_f_sys          │ test system for HydroGen  Energy Target formulation(case-f)                                                       │
+│ test_RTS_GMLC_sys              │ RTS-GMLC test system with day-ahead forecast                                                                      │
+│ test_RTS_GMLC_sys_with_hybrid  │ RTS-GMLC test system with day-ahead forecast and HybridSystem                                                     │
+└────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSSEParsingTestSystems
+
+┌────────────────────────────────┬───────────────────────────────┐
+│ Name                           │ Descriptor                    │
+├────────────────────────────────┼───────────────────────────────┤
+│ PSSE 30 Test System            │ PSSE 30 Test system           │
+│ psse_ACTIVSg2000_sys           │ PSSE ACTIVSg2000 Test system  │
+│ psse_RTS_GMLC_sys              │ PSSE .raw RTS-GMLC system     │
+│ pti_case14_sys                 │ PSSE 14-bus Test system       │
+│ pti_case24_sys                 │ PSSE 24-bus Test system       │
+│ pti_case30_sys                 │ PSSE 30-bus Test system       │
+│ pti_case3_sys                  │ PSSE 3-bus Test system        │
+│ pti_case5_alc_sys              │ PSSE 5-Bus alc Test system    │
+│ pti_case5_sys                  │ PSSE 5-Bus Test system        │
+│ pti_case73_sys                 │ PSSE 73-bus Test system       │
+│ pti_case7_tplgy_sys            │ PSSE 7-bus Test system        │
+│ pti_frankenstein_00_2_sys      │ PSSE frankenstein Test system │
+│ pti_frankenstein_00_sys        │ PSSE frankenstein Test system │
+│ pti_frankenstein_20_sys        │ PSSE frankenstein Test system │
+│ pti_frankenstein_70_sys        │ PSSE frankenstein Test system │
+│ pti_parser_test_a_sys          │ PSSE Test system              │
+│ pti_three_winding_mag_test_sys │ PSSE Test system              │
+│ pti_three_winding_test_2_sys   │ PSSE Test system              │
+│ pti_three_winding_test_sys     │ PSSE Test system              │
+│ pti_two_terminal_hvdc_test_sys │ PSSE Test system              │
+│ pti_two_winding_mag_test_sys   │ PSSE Test system              │
+│ pti_vsc_hvdc_test_sys          │ PSSE Test system              │
+└────────────────────────────────┴───────────────────────────────┘
+
+Category: PowerSystemCaseBuilder.PSYTestSystems
+
+┌─────────────────────────────────┬─────────────────────────────────────────────────────────────────┐
+│ Name                            │ Descriptor                                                      │
+├─────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
+│ dynamic_inverter_sys            │ PSY test dynamic inverter system                                │
+│ psse_240_parsing_sys            │ Test parsing of PSSE 240 Bus Case system                        │
+│ psse_3bus_SEXS_sys              │ Test parsing of PSSE 3-bus Test system with SEXS                │
+│ psse_3bus_gen_cls_sys           │ Test parsing of PSSE 3-bus Test system with CLS                 │
+│ psse_3bus_no_cls_sys            │ Test parsing of PSSE 3-bus Test system without CLS              │
+│ psse_Benchmark_4ger_33_2015_sys │ Test parsing of PSSE Benchmark system                           │
+│ psse_OMIB_sys                   │ Test parsing of PSSE OMIB Test system                           │
+│ psse_renewable_parsing_1        │ Test parsing PSSE 3-bus Test system with REPCA, REECB and REGCA │
+│ tamu_ACTIVSg2000_sys            │ TAMU ACTIVSg2000 Test system                                    │
+└─────────────────────────────────┴─────────────────────────────────────────────────────────────────┘

Systems can be listed by category

The available categories can be displayed with:

julia> show_categories()PowerSystemCaseBuilder.MatpowerTestSystems
+PowerSystemCaseBuilder.PSIDSystems
+PowerSystemCaseBuilder.PSIDTestSystems
+PowerSystemCaseBuilder.PSISystems
+PowerSystemCaseBuilder.PSITestSystems
+PowerSystemCaseBuilder.PSSEParsingTestSystems
+PowerSystemCaseBuilder.PSYTestSystems

Create a System

The first time this is run, it will parse csv data. Subsequent executions will rely on serialized data and will execute much faster since the employ deserialization

julia> sys = build_system(PSITestSystems, "c_sys5_uc")┌ Info: Building new system c_sys5_uc from raw data
+  sys_descriptor.raw_data = "/home/runner/.julia/artifacts/afb608473cf4d5eb22147856de1a1a651f36d40b/PowerSystemsTestData-3.1/psy_data/data_5bus_pu.jl"
+[ Info: Serialized time series data to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/4e67b70ea6977dbe21c7731d72cdc1494adf072a7f3f08d921db740cf264ce79/c_sys5_uc_time_series_storage.h5.
+[ Info: Serialized System to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/4e67b70ea6977dbe21c7731d72cdc1494adf072a7f3f08d921db740cf264ce79/c_sys5_uc.json
+[ Info: Serialized System metadata to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/4e67b70ea6977dbe21c7731d72cdc1494adf072a7f3f08d921db740cf264ce79/c_sys5_uc_metadata.json
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 25          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 5     │
+│ Arc             │ 6     │
+│ Line            │ 6     │
+│ PowerLoad       │ 3     │
+│ ThermalStandard │ 5     │
+└─────────────────┴───────┘
+
+Time Series Summary
+┌────────────┬────────────────┬──────────────────┬──────────────────────┬───────
+│ owner_type │ owner_category │ time_series_type │ time_series_category │ init ⋯
+│ String     │ String         │ String           │ String               │ Stri ⋯
+├────────────┼────────────────┼──────────────────┼──────────────────────┼───────
+│ PowerLoad  │ Component      │ Deterministic    │ Forecast             │ 2024 ⋯
+└────────────┴────────────────┴──────────────────┴──────────────────────┴───────
+                                                               3 columns omitted
diff --git a/previews/PR1200/how_to/reduce_repl_printing/index.html b/previews/PR1200/how_to/reduce_repl_printing/index.html new file mode 100644 index 0000000000..79181676e4 --- /dev/null +++ b/previews/PR1200/how_to/reduce_repl_printing/index.html @@ -0,0 +1,4 @@ + +...reduce REPL printing · PowerSystems.jl

Reduce REPL printing

By default PowerSystems.jl outputs to the REPL all Logging statements, which can be overwhelming in some cases.

Use configure_logging to create a logger with your preferences for which logging statements should be printed to the console or a log file:

Example: Set log output to only see error messages in the console

using PowerSystems
+using Logging
+configure_logging(; console_level = Logging.Error)

Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.

Refer to this page for more logging configuration options. Note that it describes how to enable debug logging for some log messages but not others.

diff --git a/previews/PR1200/how_to/serialize_data/index.html b/previews/PR1200/how_to/serialize_data/index.html new file mode 100644 index 0000000000..138f318618 --- /dev/null +++ b/previews/PR1200/how_to/serialize_data/index.html @@ -0,0 +1,75 @@ + +...write and read data with a JSON · PowerSystems.jl

Write, View, and Load Data with a JSON

PowerSystems.jl provides functionality to serialize an entire System to a JSON file and then deserialize it back to a System. The main benefit is that deserializing is significantly faster than reconstructing the System from raw data files.

The sections below show how to write data to a JSON, explore the data while it is in JSON format, and load Data saved in a JSON back into PowerSystems.jl.

Write data to a JSON

You can do this to save your own custom System, but we'll use an existing dataset from PowerSystemCaseBuilder.jl, simply to illustrate the process.

First, load the dependencies and a System from PowerSystemCaseBuilder:

julia> using PowerSystems
julia> using PowerSystemCaseBuilder
julia> sys = build_system(PSISystems, "c_sys5_pjm")┌ Info: Building new system c_sys5_pjm from raw data + sys_descriptor.raw_data = "/home/runner/.julia/artifacts/afb608473cf4d5eb22147856de1a1a651f36d40b/PowerSystemsTestData-3.1/psy_data/data_5bus_pu.jl" +[ Info: Serialized time series data to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/614e094ea985a55912fc1321256a49b755f9fc451c0f264f24d6d04af20e84d7/c_sys5_pjm_time_series_storage.h5. +[ Info: Serialized System to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/614e094ea985a55912fc1321256a49b755f9fc451c0f264f24d6d04af20e84d7/c_sys5_pjm.json +[ Info: Serialized System metadata to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/614e094ea985a55912fc1321256a49b755f9fc451c0f264f24d6d04af20e84d7/c_sys5_pjm_metadata.json +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 27 │ +└───────────────────┴─────────────┘ + +Static Components +┌───────────────────┬───────┐ +│ Type │ Count │ +├───────────────────┼───────┤ +│ ACBus │ 5 │ +│ Arc │ 6 │ +│ Line │ 6 │ +│ PowerLoad │ 3 │ +│ RenewableDispatch │ 2 │ +│ ThermalStandard │ 5 │ +└───────────────────┴───────┘ + +Time Series Summary +┌───────────────────┬────────────────┬──────────────────┬─────────────────────── +│ owner_type │ owner_category │ time_series_type │ time_series_category ⋯ +│ String │ String │ String │ String ⋯ +├───────────────────┼────────────────┼──────────────────┼─────────────────────── +│ PowerLoad │ Component │ SingleTimeSeries │ StaticTimeSeries ⋯ +│ RenewableDispatch │ Component │ SingleTimeSeries │ StaticTimeSeries ⋯ +└───────────────────┴────────────────┴──────────────────┴─────────────────────── + 3 columns omitted

Set up your target path, for example in a "mysystems" subfolder:

julia> folder = mkdir("mysystems");
julia> path = joinpath(folder, "system.json")"mysystems/system.json"

Now write the system to JSON:

julia> to_json(sys, path)[ Info: Serialized time series data to mysystems/system_time_series_storage.h5.
+[ Info: Serialized System to mysystems/system.json
+[ Info: Serialized System metadata to mysystems/system_metadata.json

Notice in the Info statements that the serialization process stores 3 files:

  1. System data file (*.json file)
  2. Validation data file (*.json file)
  3. Time Series data file (*.h5 file)

Viewing PowerSystems Data in JSON Format

Some users prefer to view and filter the PowerSystems.jl data while it is in JSON format. There are many tools available to browse JSON data.

Here is an example GUI tool that is available online in a browser.

The command line utility jq offers even more features. Below are some example commands, called from the command line within the "mysystems" subfolder:

View the entire file pretty-printed:

jq . system.json

View the PowerSystems component types:

jq '.data.components | .[] | .__metadata__ | .type' system.json | sort | uniq

View specific components:

jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard")' system.json

Get the count of a component type:

# There is almost certainly a better way.
+jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard")' system.json | grep -c ThermalStandard

View specific component by name:

jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard" and .name == "107_CC_1")' system.json

Filter on a field value:

jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard" and .active_power > 2.3)' system.json

Read the JSON file and create a new System

Finally, you can read the file back in, and verify the new system has the same data as above:

julia> sys2 = System(path)[ Info: Loaded time series from storage file existing=mysystems/system_time_series_storage.h5 new=/tmp/jl_Zioyxt compression=CompressionSettings(false, CompressionTypes.DEFLATE = 1, 3, true)
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 27          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌───────────────────┬───────┐
+│ Type              │ Count │
+├───────────────────┼───────┤
+│ ACBus             │ 5     │
+│ Arc               │ 6     │
+│ Line              │ 6     │
+│ PowerLoad         │ 3     │
+│ RenewableDispatch │ 2     │
+│ ThermalStandard   │ 5     │
+└───────────────────┴───────┘
+
+Time Series Summary
+┌───────────────────┬────────────────┬──────────────────┬───────────────────────
+│ owner_type        │ owner_category │ time_series_type │ time_series_category ⋯
+│ String            │ String         │ String           │ String               ⋯
+├───────────────────┼────────────────┼──────────────────┼───────────────────────
+│ PowerLoad         │ Component      │ SingleTimeSeries │ StaticTimeSeries     ⋯
+│ RenewableDispatch │ Component      │ SingleTimeSeries │ StaticTimeSeries     ⋯
+└───────────────────┴────────────────┴──────────────────┴───────────────────────
+                                                               3 columns omitted
Tip

PowerSystems generates UUIDs for the System and all components in order to have a way to uniquely identify objects. During deserialization it restores the same UUIDs. If you will modify the System or components after deserialization then it is recommended that you set this flag to generate new UUIDs.

system2 = System(path; assign_new_uuids = true)
diff --git a/previews/PR1200/index.html b/previews/PR1200/index.html new file mode 100644 index 0000000000..1bfb1fef7b --- /dev/null +++ b/previews/PR1200/index.html @@ -0,0 +1,2 @@ + +Welcome Page · PowerSystems.jl

Welcome to PowerSystems.jl

Announcement

PowerSystems.jl upgraded to version 4.0 in June 2024, which included breaking changes. Visit the v4.0 migration guide for information on how to update your existing code.

We also have re-organized and updated this documentation, including new tutorials! Check out How To Use This Documentation below to orient yourself.

About

PowerSystems.jl is part of the National Renewable Energy Laboratory's Sienna ecosystem, an open source framework for scheduling problems and dynamic simulations for power systems. The Sienna ecosystem can be found on github. It contains three applications:

  • Sienna\Data enables efficient data input, analysis, and transformation
  • Sienna\Ops enables enables system scheduling simulations by formulating and solving optimization problems
  • Sienna\Dyn enables system transient analysis including small signal stability and full system dynamic simulations

Each application uses multiple packages in the Julia programming language.

PowerSystems.jl is the foundation of Sienna\Data, and it is used with all three applications. It provides a rigorous data model using Julia structures to enable power systems modeling. PowerSystems.jl is agnostic to a specific mathematical model and can be used for many model categories.

PowerSystems.jl provides tools to prepare and process data useful for electric energy systems modeling. This package serves two purposes:

  1. It facilitates the development and open sharing of large data sets for Power Systems modeling
  2. It provides a data model that imposes discipline on model specification, addressing the challenge of design and terminology choices when sharing code and data.

The main features include:

  • Comprehensive and extensible library of data structures for electric systems modeling.
  • Large scale data set development tools based on common text based data formats (PSS/e .raw and .dyr, and MATPOWER) and configurable tabular data (e.g. CSV) parsing capabilities.
  • Optimized container for component data and time series supporting serialization to portable file formats and configurable validation routines.

How To Use This Documentation

There are five main sections containing different information:

  • Tutorials - Detailed walk-throughs to help you learn how to use PowerSystems.jl
  • How to... - Directions to help guide your work for a particular task
  • Explanation - Additional details and background information to help you understand PowerSystems.jl, its structure, and how it works behind the scenes
  • Reference - Technical references and API for a quick look-up during your work
  • Model Library - Technical references of the data types and their functions that PowerSystems.jl uses to model power system components

PowerSystems.jl strives to follow the Diataxis documentation framework.

Getting Started

If you are new to PowerSystems.jl, here's how we suggest getting started:

  1. Install

  2. Work through the introductory tutorial: Create and Explore a Power System to familiarize yourself with how PowerSystems.jl works

  3. Work through the other basic tutorials based on your interests

  4. Then, see the how-to's on parsing Matpower or PSS/e files or CSV files to begin loading your own data into PowerSystems.jl

diff --git a/previews/PR1200/model_library/dynamic_branch/index.html b/previews/PR1200/model_library/dynamic_branch/index.html new file mode 100644 index 0000000000..d8e823dd36 --- /dev/null +++ b/previews/PR1200/model_library/dynamic_branch/index.html @@ -0,0 +1,50 @@ + +Dynamic Lines · PowerSystems.jl

Dynamic Branch

PowerSystems.DynamicBranchType

Extends the branch type to add the information required for dynamic modeling of branches. Includes the fields for the states and the number of states

Arguments

  • branch::ACBranch
source
PowerSystems.get_bMethod
get_b(
+    value::DynamicBranch
+) -> @NamedTuple{from::Float64, to::Float64}
+

Get DynamicBranch b.

source
PowerSystems.set_angle_limits!Method
set_angle_limits!(
+    value::DynamicBranch,
+    val::@NamedTuple{min::Float64, max::Float64}
+) -> @NamedTuple{min::Float64, max::Float64}
+

Set DynamicBranch angle_limits.

source
diff --git a/previews/PR1200/model_library/dynamic_generator/index.html b/previews/PR1200/model_library/dynamic_generator/index.html new file mode 100644 index 0000000000..ea15500f41 --- /dev/null +++ b/previews/PR1200/model_library/dynamic_generator/index.html @@ -0,0 +1,21 @@ + +Dynamic Generator · PowerSystems.jl

DynamicGenerator

PowerSystems.DynamicGeneratorType
mutable struct DynamicGenerator{
+    M <: Machine,
+    S <: Shaft,
+    A <: AVR,
+    TG <: TurbineGov,
+    P <: PSS,
+} <: DynamicInjection
+    name::String
+    ω_ref::Float64
+    machine::M
+    shaft::S
+    avr::A
+    prime_mover::TG
+    pss::P
+    base_power::Float64
+    n_states::Int
+    states::Vector{Symbol}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A dynamic generator with the necessary data for modeling the dynamic response of a generator in a phasor or electromagnetic transient simulation.

Dynamic generator is composed by 5 components, namely a Machine, a Shaft, an Automatic Voltage Regulator (AVR), a Prime Mover and Turbine Governor, and Power System Stabilizer (PSS). It must be attached to a StaticInjection device using add_component!, which contains all the rest of the generator's data that isn't specific to its dynamic response.

Arguments

  • name::String: Name of generator.
  • ω_ref::Float64: Frequency reference set-point in pu.
  • machine <: Machine: Machine model for modeling the electro-magnetic phenomena.
  • shaft <: Shaft: Shaft model for modeling the electro-mechanical phenomena.
  • avr <: AVR: AVR model of the excitacion system.
  • prime_mover <: TurbineGov: Prime Mover and Turbine Governor model for mechanical power.
  • pss <: PSS: PSS model.
  • base_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization. Although this has a default, in almost all cases base_power should be updated to equal the base_power field of the StaticInjection device that this dynamic generator will be attached to.
  • n_states::Int: (Do not modify.) Number of states (will depend on the inputs above).
  • states::Vector{Symbol}: (Do not modify.) Vector of states (will depend on the inputs above).
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/dynamic_inverter/index.html b/previews/PR1200/model_library/dynamic_inverter/index.html new file mode 100644 index 0000000000..92b64ba6a2 --- /dev/null +++ b/previews/PR1200/model_library/dynamic_inverter/index.html @@ -0,0 +1,24 @@ + +Dynamic Inverter · PowerSystems.jl

DynamicInverter

PowerSystems.DynamicInverterType
mutable struct DynamicInverter{
+    C <: Converter,
+    O <: OuterControl,
+    IC <: InnerControl,
+    DC <: DCSource,
+    P <: FrequencyEstimator,
+    F <: Filter,
+} <: DynamicInjection
+    name::String
+    ω_ref::Float64
+    converter::C
+    outer_control::O
+    inner_control::IC
+    dc_source::DC
+    freq_estimator::P
+    filter::F
+    limiter::Union{nothing, OutputCurrentLimiter}
+    base_power::Float64
+    n_states::Int
+    states::Vector{Symbol}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A dynamic inverter with the necessary data for modeling the dynamic response of an inverter in a phasor or electromagnetic transient simulation.

A dynamic inverter is composed by 6 components, namely a Converter, Outer Loop Control, Inner Loop Control, a DC Source, a Frequency Estimator and a Filter.

It must be attached to a StaticInjection device using add_component!, which contains all the rest of the generator's data that isn't specific to its dynamic response.

Arguments

  • name::String: Name of inverter.
  • ω_ref::Float64: Frequency reference set-point in pu.
  • converter <: Converter: Converter model for the PWM transformation.
  • outer_control <: OuterControl: An OuterControl controller model.
  • inner_control <: InnerControl: An InnerControl controller model.
  • dc_source <: DCSource: DCSource model.
  • freq_estimator <: FrequencyEstimator: a FrequencyEstimator (typically a PLL) model.
  • filter <: Filter: Filter model.
  • limiter <: Union{nothing, OutputCurrentLimiter}: (default: nothing) Inner Control Current Limiter model
  • base_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization. Although this has a default, in almost all cases base_power should be updated to equal the base_power field of the StaticInjection device that this dynamic generator will be attached to.
  • n_states::Int: (Do not modify.) Number of states (will depend on the inputs above).
  • states::Vector{Symbol}: (Do not modify.) Vector of states (will depend on the inputs above).
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ACBus/index.html b/previews/PR1200/model_library/generated_ACBus/index.html new file mode 100644 index 0000000000..3e2655469b --- /dev/null +++ b/previews/PR1200/model_library/generated_ACBus/index.html @@ -0,0 +1,35 @@ + +ACBus · PowerSystems.jl

ACBus

PowerSystems.ACBusType
mutable struct ACBus <: Bus
+    number::Int
+    name::String
+    bustype::Union{Nothing, ACBusTypes}
+    angle::Union{Nothing, Float64}
+    magnitude::Union{Nothing, Float64}
+    voltage_limits::Union{Nothing, MinMax}
+    base_voltage::Union{Nothing, Float64}
+    area::Union{Nothing, Area}
+    load_zone::Union{Nothing, LoadZone}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

An AC bus

Arguments

  • number::Int: A unique bus identification number (positive integer)
  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • bustype::Union{Nothing, ACBusTypes}: Used to describe the connectivity and behavior of this bus. Options are listed here.
  • angle::Union{Nothing, Float64}: angle of the bus in radians, validation range: (-1.571, 1.571)
  • magnitude::Union{Nothing, Float64}: voltage as a multiple of base_voltage, validation range: voltage_limits
  • voltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of base_voltage
  • base_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing)
  • area::Union{Nothing, Area}: (default: nothing) the area containing the bus
  • load_zone::Union{Nothing, LoadZone}: (default: nothing) the load zone containing the bus
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_AGC/index.html b/previews/PR1200/model_library/generated_AGC/index.html new file mode 100644 index 0000000000..555515149e --- /dev/null +++ b/previews/PR1200/model_library/generated_AGC/index.html @@ -0,0 +1,33 @@ + +AGC · PowerSystems.jl

AGC

PowerSystems.AGCType
mutable struct AGC <: Service
+    name::String
+    available::Bool
+    bias::Float64
+    K_p::Float64
+    K_i::Float64
+    K_d::Float64
+    delta_t::Float64
+    area::Union{Nothing, Area}
+    initial_ace::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

Automatic generation control (AGC) for the system or a certain Area within the system.

This model uses a proportional–integral–derivative (PID) control to simulate a "smooth" response of the AGC to the area control error (ACE). Refer to "AGC Simulation Model for Large Renewable Energy Penetration Studies."

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bias::Float64: Area frequency bias in MW/Hz
  • K_p::Float64: PID Proportional Constant
  • K_i::Float64: PID Integral Constant
  • K_d::Float64: PID Derivative Constant
  • delta_t::Float64: PID Discretization period [Seconds]
  • area::Union{Nothing, Area}: (default: nothing) the area controlled by the AGC
  • initial_ace::Float64: (default: 0.0) Initial condition for ACE
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_AVR/index.html b/previews/PR1200/model_library/generated_AVR/index.html new file mode 100644 index 0000000000..f6a36f58f6 --- /dev/null +++ b/previews/PR1200/model_library/generated_AVR/index.html @@ -0,0 +1,1311 @@ + +AVR · PowerSystems.jl

AVR

AVRFixed

PowerSystems.AVRFixedType
mutable struct AVRFixed <: AVR
+    Vf::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of a AVR that returns a fixed voltage to the rotor winding

Arguments

  • Vf::Float64: Fixed voltage field applied to the rotor winding in pu (DEVICE_BASE), validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) Fixed AVR has no states
  • n_states::Int: (Do not modify.) Fixed AVR has no states
  • states_types::Vector{StateTypes}: (Do not modify.) Fixed AVR has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

AVRSimple

PowerSystems.AVRSimpleType
mutable struct AVRSimple <: AVR
+    Kv::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of a simple proportional AVR in the derivative of EMF i.e. an integrator controller on EMF

Arguments

  • Kv::Float64: Proportional Gain, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vf: field voltage
  • n_states::Int: (Do not modify.) Fixed AVR has 1 state
  • states_types::Vector{StateTypes}: (Do not modify.) Simple AVR has 1 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

AVRTypeI

PowerSystems.AVRTypeIType
mutable struct AVRTypeI <: AVR
+    Ka::Float64
+    Ke::Float64
+    Kf::Float64
+    Ta::Float64
+    Te::Float64
+    Tf::Float64
+    Tr::Float64
+    Va_lim::MinMax
+    Ae::Float64
+    Be::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of an Automatic Voltage Regulator Type I - Resembles IEEE Type DC1

Arguments

  • Ka::Float64: Amplifier Gain, validation range: (0, nothing)
  • Ke::Float64: Field circuit integral deviation, validation range: (0, nothing)
  • Kf::Float64: Stabilizer Gain in s * pu/pu, validation range: (0, nothing)
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, nothing)
  • Te::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)
  • Tf::Float64: Stabilizer Time Constant in s, validation range: (0, nothing)
  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)
  • Va_lim::MinMax: Limits for pi controler (Va_min, Va_max)
  • Ae::Float64: 1st ceiling coefficient, validation range: (0, nothing)
  • Be::Float64: 2nd ceiling coefficient, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vf: Voltage field,
+Vr1: Amplifier State,
+Vr2: Stabilizing Feedback State,
+Vm: Measured voltage
  • n_states::Int: (Do not modify.) The AVR Type I has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) AVR Type I has 4 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

AVRTypeII

PowerSystems.AVRTypeIIType
mutable struct AVRTypeII <: AVR
+    K0::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    Te::Float64
+    Tr::Float64
+    Va_lim::MinMax
+    Ae::Float64
+    Be::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of an Automatic Voltage Regulator Type II - Typical static exciter model

Arguments

  • K0::Float64: Regulator Gain, validation range: (0, nothing)
  • T1::Float64: First Pole in s, validation range: (0, nothing)
  • T2::Float64: First zero in s, validation range: (0, nothing)
  • T3::Float64: First Pole in s, validation range: (0, nothing)
  • T4::Float64: First zero in s, validation range: (0, nothing)
  • Te::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)
  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)
  • Va_lim::MinMax: Limits for pi controler (Va_min, Va_max)
  • Ae::Float64: 1st ceiling coefficient, validation range: (0, nothing)
  • Be::Float64: 2nd ceiling coefficient, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vf: Voltage field,
+Vr1: First Lead-Lag state,
+Vr2: Second lead-lag state,
+Vm: Measured voltage
  • n_states::Int: (Do not modify.) AVR Type II has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) AVR Type II has 4 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESAC1A

PowerSystems.ESAC1AType
mutable struct ESAC1A <: AVR
+    Tr::Float64
+    Tb::Float64
+    Tc::Float64
+    Ka::Float64
+    Ta::Float64
+    Va_lim::MinMax
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    Kc::Float64
+    Kd::Float64
+    Ke::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    Vr_lim::MinMax
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. This model corresponds to ESAC1A in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
  • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
  • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2)
  • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)
  • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • Vr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: Lead-lag state,
+Vr2: Regulator output state,
+Ve: Integrator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) ESAC1A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ESAC1A has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESAC6A

PowerSystems.ESAC6AType
mutable struct ESAC6A <: AVR
+    Tr::Float64
+    Ka::Float64
+    Ta::Float64
+    Tk::Float64
+    Tb::Float64
+    Tc::Float64
+    Va_lim::MinMax
+    Vr_lim::MinMax
+    Te::Float64
+    VFE_lim::Float64
+    Kh::Float64
+    VH_max::Float64
+    Th::Float64
+    Tj::Float64
+    Kc::Float64
+    Kd::Float64
+    Ke::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Modified AC6A. Used to represent field-controlled alternator-rectifier excitation systems with system-supplied electronic voltage regulators. Parameters of IEEE Std 421.5 Type AC6A Excitacion System. ESAC6A in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output lag time constant in s, validation range: (0, 10)
  • Tk::Float64: Voltage Regulator lead time constant, validation range: (0, 10)
  • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)
  • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
  • Vr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)
  • Te::Float64: Exciter field time constant, validation range: (eps(), 2)
  • VFE_lim::Float64: Exciter field current limiter reference, validation range: (-5, 20)
  • Kh::Float64: Exciter field current regulator feedback gain, validation range: (0, 100)
  • VH_max::Float64: Exciter field current limiter maximum output, validation range: (0, 100)
  • Th::Float64: Exciter field current limiter denominator (lag) time constant, validation range: (0, 1)
  • Tj::Float64: Exciter field current limiter numerator (lead) time constant, validation range: (0, 1)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 2)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 2)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: Lead-lag state,
+Vr2: Regulator output state,
+Ve: Integrator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) ESAC6A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ESAC6A has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESAC8B

PowerSystems.ESAC8BType
mutable struct ESAC8B <: AVR
+    Tr::Float64
+    Kp::Float64
+    Ki::Float64
+    Kd::Float64
+    Td::Float64
+    Ka::Float64
+    Ta::Float64
+    Vr_lim::MinMax
+    Te::Float64
+    Ke::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Excitation System AC8B. Used to represent the Basler Digital Excitation Control System (DECS) with PID controller in PSSE.

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, nothing)
  • Kp::Float64: Regulator proportional PID gain, validation range: (0, nothing)
  • Ki::Float64: Regulator integral PID gain, validation range: (0, nothing)
  • Kd::Float64: Regulator derivative PID gain, validation range: (0, nothing)
  • Td::Float64: Regulator derivative PID time constant., validation range: (0, 10)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output lag time constant in s, validation range: (0, 10)
  • Vr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)
  • Te::Float64: Exciter field time constant, validation range: (eps(), 2)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 2)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+x_i: Internal PI-block state,
+x_d: Internal Derivative-block state,
+Vr: Voltage regulator state,
+Efd: Exciter output state
  • n_states::Int: (Do not modify.) ESAC8B has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ESAC8B has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESDC1A

PowerSystems.ESDC1AType
mutable struct ESDC1A <: AVR
+    Tr::Float64
+    Ka::Float64
+    Ta::Float64
+    Tb::Float64
+    Tc::Float64
+    Vr_lim::MinMax
+    Ke::Float64
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    switch::Int
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Self-excited shunt fields with the voltage regulator operating in a mode commonly termed buck-boost. Parameters of IEEE Std 421.5 Type DC1A Excitacion System. This model corresponds to ESDC1A in PSSE and PSLF

Arguments

  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)
  • Ka::Float64: Amplifier Gain, validation range: (10, 500)
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1)
  • Tb::Float64: Regulator input Time Constant in s, validation range: (0, nothing)
  • Tc::Float64: Regulator input Time Constant in s, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
  • Ke::Float64: Exciter constant related to self-excited field, validation range: (0, nothing)
  • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1)
  • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)
  • Tf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing)
  • switch::Int: Switch, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vt: Terminal Voltage,
+Vr1: input lead lag,
+Vr2: Regulator Output,
+Vf: Exciter Output, 
+Vr3: Rate feedback integrator
  • n_states::Int: (Do not modify.) The ESDC1A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ESDC1A has 5 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESDC2A

PowerSystems.ESDC2AType
mutable struct ESDC2A <: AVR
+    Tr::Float64
+    Ka::Float64
+    Ta::Float64
+    Tb::Float64
+    Tc::Float64
+    Vr_lim::MinMax
+    Ke::Float64
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    switch::Int
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Is used to represent field-controlled dc commutator exciters with continuously acting voltage regulators having power supplies derived from the generator or auxiliaries bus. Parameters of IEEE Std 421.5 Type DC2A Excitacion System. This model corresponds to ESDC2A in PSSE and PSLF

Arguments

  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)
  • Ka::Float64: Amplifier Gain, validation range: (10, 500)
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1)
  • Tb::Float64: Regulator input Time Constant in s, validation range: (0, nothing)
  • Tc::Float64: Regulator input Time Constant in s, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
  • Ke::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)
  • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 2)
  • Kf::Float64: Excitation control system stabilizer gain, validation range: (0, 0.3)
  • Tf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5.0 <= Tf/Kf <= 15.0, validation range: (eps(), 1.5)
  • switch::Int: Switch, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vt: Terminal Voltage,
+Vr1: input lead lag,
+Vr2: Regulator Output,
+Vf: Exciter Output, 
+Vr3: Rate feedback integrator
  • n_states::Int: (Do not modify.) The ESDC2A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ESDC2A has 5 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESST1A

PowerSystems.ESST1AType
mutable struct ESST1A <: AVR
+    UEL_flags::Int
+    PSS_flags::Int
+    Tr::Float64
+    Vi_lim::Tuple{Float64, Float64}
+    Tc::Float64
+    Tb::Float64
+    Tc1::Float64
+    Tb1::Float64
+    Ka::Float64
+    Ta::Float64
+    Va_lim::MinMax
+    Vr_lim::MinMax
+    Kc::Float64
+    Kf::Float64
+    Tf::Float64
+    K_lr::Float64
+    I_lr::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

This excitation system supplies power through a transformer from the generator terminals and its regulated by a controlled rectifier (via thyristors). Parameters of IEEE Std 421.5 Type ST1A Excitacion System. ESST1A in PSSE and PSLF

Arguments

  • UEL_flags::Int: Code input for Underexcitization limiter (UEL) entry. Not supported, validation range: (1, 3)
  • PSS_flags::Int: Code input for Power System Stabilizer (PSS) or (VOS) entry, validation range: (1, 2)
  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.1)
  • Vi_lim::Tuple{Float64, Float64}: Voltage error limits (regulator input) (Vimin, Vimax)
  • Tc::Float64: First regulator denominator (lead) time constant in s, validation range: (0, 10)
  • Tb::Float64: First regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 10)
  • Tb1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 20)
  • Ka::Float64: Voltage regulator gain, validation range: (50, 1000)
  • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 0.5)
  • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
  • Vr_lim::MinMax: Limits for exciter output (Vr_min, Vr_max)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 0.3)
  • Kf::Float64: Rate feedback gain, validation range: (0, 0.3)
  • Tf::Float64: Rate feedback time constant in s, validation range: (eps(), 1.5)
  • K_lr::Float64: Exciter output current limiter gain, validation range: (0, 5)
  • I_lr::Float64: Exciter output current limit reference, validation range: (0, 5)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: First Lead-lag state,
+Vr2: Second lead-lag state,
+Va: Regulator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) ST1A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ST1A has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ESST4B

PowerSystems.ESST4BType
mutable struct ESST4B <: AVR
+    Tr::Float64
+    K_pr::Float64
+    K_ir::Float64
+    Vr_lim::MinMax
+    Ta::Float64
+    K_pm::Float64
+    K_im::Float64
+    Vm_lim::MinMax
+    Kg::Float64
+    Kp::Float64
+    Ki::Float64
+    VB_max::Float64
+    Kc::Float64
+    Xl::Float64
+    θp::Float64
+    V_ref::Float64
+    θp_rad::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

In these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST4B Excitacion System. ESST4B in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • K_pr::Float64: Regulator propotional gain, validation range: (0, 75)
  • K_ir::Float64: Regulator integral gain, validation range: (0, 75)
  • Vr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)
  • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 1)
  • K_pm::Float64: Voltage regulator proportional gain output, validation range: (0, 1.2)
  • K_im::Float64: Voltage regulator integral gain output, validation range: (0, 18)
  • Vm_lim::MinMax: Limits for inner loop output (Vm_min, Vm_max)
  • Kg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, 1.1)
  • Kp::Float64: Potential circuit (voltage) gain coefficient, validation range: (0, 10)
  • Ki::Float64: Compound circuit (current) gain coefficient, validation range: (0, 1.1)
  • VB_max::Float64: Maximum available exciter voltage, validation range: (1, 20)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Xl::Float64: Reactance associated with potential source, validation range: (0, 0.5)
  • θp::Float64: Potential circuit phase angle (degrees), validation range: (-90, 90)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • θp_rad::Float64: (default: θp*π*inv(180)) (Do not modify.) Potential circuit phase angle (radians)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vt: Sensed Terminal Voltage,
+Vr1: Regulator Integrator,
+Vr2: Regulator Output,
+Vm: Output integrator
  • n_states::Int: (Do not modify.) ST4B has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) ST4B has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

EXAC1

PowerSystems.EXAC1Type
mutable struct EXAC1 <: AVR
+    Tr::Float64
+    Tb::Float64
+    Tc::Float64
+    Ka::Float64
+    Ta::Float64
+    Vr_lim::MinMax
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    Kc::Float64
+    Kd::Float64
+    Ke::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Modified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A. EXAC1 in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
  • Vr_lim::MinMax: Limits for regulator output (Vr_min, Vr_max)
  • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2)
  • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)
  • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: Lead-lag state,
+Vr2: Regulator output state,
+Ve: Integrator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) EXAC1 has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) EXAC1 has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

EXAC1A

PowerSystems.EXAC1AType
mutable struct EXAC1A <: AVR
+    Tr::Float64
+    Tb::Float64
+    Tc::Float64
+    Ka::Float64
+    Ta::Float64
+    Va_lim::MinMax
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    Kc::Float64
+    Kd::Float64
+    Ke::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    Vr_lim::MinMax
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Modified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. EXAC1A in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
  • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
  • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2)
  • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)
  • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • Vr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: Lead-lag state,
+Vr2: Regulator output state,
+Ve: Integrator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) EXAC1A has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) EXAC1A has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

EXAC2

PowerSystems.EXAC2Type
mutable struct EXAC2 <: AVR
+    Tr::Float64
+    Tb::Float64
+    Tc::Float64
+    Ka::Float64
+    Ta::Float64
+    Va_lim::MinMax
+    Kb::Float64
+    Vr_lim::MinMax
+    Te::Float64
+    Kl::Float64
+    Kh::Float64
+    Kf::Float64
+    Tf::Float64
+    Kc::Float64
+    Kd::Float64
+    Ke::Float64
+    V_lr::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Modified AC2. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC2A Excitacion System. The alternator main exciter is used, feeding its output via non-controlled rectifiers. The Type AC2C model is similar to that of Type AC1C except for the inclusion of exciter time constant compensation and exciter field current limiting elements. EXAC2 in PSSE and PSLF

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)
  • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)
  • Ka::Float64: Regulator output gain, validation range: (0, 1000)
  • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
  • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
  • Kb::Float64: Second Stage regulator gain, validation range: (eps(), 500)
  • Vr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)
  • Te::Float64: Exciter field time constant, validation range: (eps(), 2)
  • Kl::Float64: Exciter field current limiter gain, validation range: (0, 1.1)
  • Kh::Float64: Exciter field current regulator feedback gain, validation range: (0, 1.1)
  • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)
  • Tf::Float64: Rate feedback time constant, validation range: (eps(), nothing)
  • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
  • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)
  • Ke::Float64: Exciter field proportional constant, validation range: (0, 1)
  • V_lr::Float64: Maximum exciter field current, validation range: (0, nothing)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: Lead-lag state,
+Vr2: Regulator output state,
+Ve: Integrator output state,
+Vr3: Feedback output state
  • n_states::Int: (Do not modify.) EXAC2 has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) EXAC2 has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

EXPIC1

PowerSystems.EXPIC1Type
mutable struct EXPIC1 <: AVR
+    Tr::Float64
+    Ka::Float64
+    Ta::Float64
+    Va_lim::MinMax
+    Ta_2::Float64
+    Ta_3::Float64
+    Ta_4::Float64
+    Vr_lim::MinMax
+    Kf::Float64
+    Tf_1::Float64
+    Tf_2::Float64
+    Efd_lim::MinMax
+    Ke::Float64
+    Te::Float64
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    Kp::Float64
+    Ki::Float64
+    Kc::Float64
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Generic Proportional/Integral Excitation System

Arguments

  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)
  • Ka::Float64: Voltage regulator gain, validation range: (1, 500)
  • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 10)
  • Va_lim::MinMax: Limits for pi controler (Vr_min, Vr_max)
  • Ta_2::Float64: Voltage regulator time constant in s, validation range: (0, nothing)
  • Ta_3::Float64: Voltage regulator time constant in s, validation range: (0, nothing)
  • Ta_4::Float64: Voltage regulator time constant in s, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
  • Kf::Float64: Rate feedback gain, validation range: (0, 0.3)
  • Tf_1::Float64: Rate Feedback time constant in s, validation range: (eps(), 15)
  • Tf_2::Float64: Rate Feedback time constant in s, validation range: (0, 5)
  • Efd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)
  • Ke::Float64: Exciter constant, validation range: (0, 1)
  • Te::Float64: Exciter time constant, validation range: (0, 2)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • Kp::Float64: Potential source gain, validation range: (0, 5)
  • Ki::Float64: current source gain, validation range: (0, 1.1)
  • Kc::Float64: Exciter regulation factor, validation range: (0, 2)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+Vr1: First Lead-lag state,
+Vr2: Second regulator lead-lag state,
+Vr2: Third regulator lead-lag state 
+Vf: Exciter output 
+Vr3: First feedback integrator,
+Vr4: second feedback integrator
  • n_states::Int: (Do not modify.) EXPIC1 has 6 states
  • states_types::Vector{StateTypes}: (Do not modify.) EXPIC has 6 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

IEEET1

PowerSystems.IEEET1Type
mutable struct IEEET1 <: AVR
+    Tr::Float64
+    Ka::Float64
+    Ta::Float64
+    Vr_lim::MinMax
+    Ke::Float64
+    Te::Float64
+    Kf::Float64
+    Tf::Float64
+    switch::Int
+    E_sat::Tuple{Float64, Float64}
+    Se::Tuple{Float64, Float64}
+    V_ref::Float64
+    saturation_coeffs::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

1968 IEEE type 1 excitation system model

Arguments

  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)
  • Ka::Float64: Amplifier Gain, validation range: (10, 500)
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1)
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
  • Ke::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)
  • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1)
  • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)
  • Tf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5 <= Tf/Kf <= 15, validation range: (eps(), nothing)
  • switch::Int: Switch, validation range: (0, 1)
  • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
  • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • saturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vt: Terminal Voltage,
+Vr: Regulator Output,
+Vf: Exciter Output, 
+Vr3: Rate feedback integrator
  • n_states::Int: (Do not modify.) The IEEET1 has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEET1 I has 4 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

EX4VSA

EXST1

SCRX

PowerSystems.SCRXType
mutable struct SCRX <: AVR
+    Ta_Tb::Float64
+    Tb::Float64
+    K::Float64
+    Te::Float64
+    Efd_lim::MinMax
+    switch::Int
+    rc_rfd::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

This exciter is based on an IEEE type SCRX solid state exciter. The output field voltage is varied by a control system to maintain the system voltage at Vref. Please note that this exciter model has no initialization capabilities - this means that it will respond to whatever inputs it receives regardless of the state of the machine model

Arguments

  • Ta_Tb::Float64: Lead input constant ratio, validation range: (0.05, 0.3)
  • Tb::Float64: Lag input constant in s, validation range: (5, 20)
  • K::Float64: Regulator Gain, validation range: (20, 100)
  • Te::Float64: Regulator Time Constant, validation range: (0, 1)
  • Efd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)
  • switch::Int: Switch, validation range: (0, 1)
  • rc_rfd::Float64: Field current capability. Set = 0 for negative current capability. Typical value 10, validation range: (0, 10)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vr1: First integrator,
+Vr2: Second integrator
  • n_states::Int: (Do not modify.) SCRX has 2 states
  • states_types::Vector{StateTypes}: (Do not modify.) SCRX has 2 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SEXS

PowerSystems.SEXSType
mutable struct SEXS <: AVR
+    Ta_Tb::Float64
+    Tb::Float64
+    K::Float64
+    Te::Float64
+    V_lim::MinMax
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of Simplified Excitation System Model - SEXS in PSSE

Arguments

  • Ta_Tb::Float64: Ratio of lead and lag time constants, validation range: (0, nothing)
  • Tb::Float64: Lag time constant, validation range: (eps(), nothing)
  • K::Float64: Gain, validation range: (0, nothing)
  • Te::Float64: Field circuit time constant in s, validation range: (0, nothing)
  • V_lim::MinMax: Field voltage limits
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are: Vf: Voltage field, Vr: Lead-lag state
  • n_states::Int: (Do not modify.) SEXS has 2 states
  • states_types::Vector{StateTypes}: (Do not modify.) SEXS has 2 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ST6B

PowerSystems.ST6BType
mutable struct ST6B <: AVR
+    OEL_Flag::Int
+    Tr::Float64
+    K_pa::Float64
+    K_ia::Float64
+    K_da::Float64
+    T_da::Float64
+    Va_lim::MinMax
+    K_ff::Float64
+    K_m::Float64
+    K_ci::Float64
+    K_lr::Float64
+    I_lr::Float64
+    Vr_lim::MinMax
+    Kg::Float64
+    Tg::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

In these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST6B Excitacion System. ST6B in PSSE and PSLF

Arguments

  • OEL_Flag::Int: OEL Flag for ST6B: 1: before HV gate, 2: after HV gate, validation range: (0, 2)
  • Tr::Float64: Regulator input filter time constant in s, validation range: (0, nothing)
  • K_pa::Float64: Regulator proportional gain, validation range: (0, nothing)
  • K_ia::Float64: Regulator integral gain, validation range: (0, nothing)
  • K_da::Float64: Regulator derivative gain, validation range: (0, nothing)
  • T_da::Float64: Voltage regulator derivative channel time constant in s, validation range: (0, nothing)
  • Va_lim::MinMax: Regulator output limits (Vimin, Vimax)
  • K_ff::Float64: Pre-control gain of the inner loop field regulator, validation range: (0, nothing)
  • K_m::Float64: Forward gain of the inner loop field regulator, validation range: (0, nothing)
  • K_ci::Float64: Exciter output current limit adjustment gain, validation range: (0, nothing)
  • K_lr::Float64: Exciter output current limiter gain, validation range: (0, nothing)
  • I_lr::Float64: Exciter current limiter reference, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)
  • Kg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, nothing)
  • Tg::Float64: Feedback time constant of the inner loop field voltage regulator in s, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+x_i: Regulator Integrator,
+x_d: Regulator Derivative,
+Vg: Regulator Feedback
  • n_states::Int: (Do not modify.) ST6B has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) ST6B has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ST8C

PowerSystems.ST8CType
mutable struct ST8C <: AVR
+    OEL_Flag::Int
+    UEL_Flag::Int
+    SCL_Flag::Int
+    SW1_Flag::Int
+    Tr::Float64
+    K_pr::Float64
+    K_ir::Float64
+    Vpi_lim::MinMax
+    K_pa::Float64
+    K_ia::Float64
+    Va_lim::MinMax
+    K_a::Float64
+    T_a::Float64
+    Vr_lim::MinMax
+    K_f::Float64
+    T_f::Float64
+    K_c1::Float64
+    K_p::Float64
+    K_i1::Float64
+    X_l::Float64
+    θ_p::Float64
+    VB1_max::Float64
+    K_c2::Float64
+    K_i2::Float64
+    VB2_max::Float64
+    V_ref::Float64
+    Ifd_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

In these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST8C Excitacion System. ST8C in PSSE and PSLF

Arguments

  • OEL_Flag::Int: OEL Flag for ST8C: <2: Summation at Voltage Error, 2: OEL takeover at gate, validation range: (0, 2)
  • UEL_Flag::Int: UEL Flag for ST8C: <2: Summation at Voltage Error, 2: UEL takeover at gate, validation range: (0, 2)
  • SCL_Flag::Int: SCL Flag for ST8C: <2: Summation at Voltage Error, 2: SCL Takeover at UEL and OEL gates, validation range: (0, 2)
  • SW1_Flag::Int: SW1 Flag for Power Source Selector for ST8C: <2: Source from generator terminal voltage, 2: Independent power source, validation range: (0, 2)
  • Tr::Float64: Regulator input filter time constant in seconds, validation range: (0, nothing)
  • K_pr::Float64: Regulator proportional gain (pu), validation range: (0, nothing)
  • K_ir::Float64: Regulator integral gain (pu), validation range: (0, nothing)
  • Vpi_lim::MinMax: Regulator input limits (Vpimin, Vpimax)
  • K_pa::Float64: Field current regulator proportional gain (pu), validation range: (0, nothing)
  • K_ia::Float64: Field current regulator integral gain (pu), validation range: (0, nothing)
  • Va_lim::MinMax: Field current regulator output limits (Vamin, Vamax)
  • K_a::Float64: Field current regulator proportional gain (pu), validation range: (0, nothing)
  • T_a::Float64: Controlled rectifier bridge equivalent time constant in seconds, validation range: (0, nothing)
  • Vr_lim::MinMax: Voltage regulator limits (Vrmin, Vrmax)
  • K_f::Float64: Exciter field current feedback gain (pu), validation range: (0, nothing)
  • T_f::Float64: Field current feedback time constant in seconds, validation range: (0, nothing)
  • K_c1::Float64: Rectifier loading factor proportional to commutating reactance (pu), validation range: (0, nothing)
  • K_p::Float64: Potential circuit (voltage) gain coefficient (pu), validation range: (0, nothing)
  • K_i1::Float64: Potential circuit (current) gain coefficient (pu), validation range: (0, nothing)
  • X_l::Float64: Reactance associated with potential source (pu), validation range: (0, nothing)
  • θ_p::Float64: Potential circuit phase angle (degrees), validation range: (0, nothing)
  • VB1_max::Float64: Maximum available exciter voltage (pu), validation range: (0, nothing)
  • K_c2::Float64: Rectifier loading factor proportional to commutating reactance (pu), validation range: (0, nothing)
  • K_i2::Float64: Potential circuit (current) gain coefficient (pu), validation range: (0, nothing)
  • VB2_max::Float64: Maximum available exciter voltage (pu), validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • Ifd_ref::Float64: (default: 1.0) Reference Field Current Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
Vm: Sensed terminal voltage,
+x_a1: Regulator Integrator state,
+x_a2: Field Current regulator state,
+x_a3: Controller rectifier bridge state,
+x_a4: Regulator Feedback state
  • n_states::Int: (Do not modify.) ST8C has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) ST8C has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ActiveConstantPowerLoad/index.html b/previews/PR1200/model_library/generated_ActiveConstantPowerLoad/index.html new file mode 100644 index 0000000000..b1aed0c329 --- /dev/null +++ b/previews/PR1200/model_library/generated_ActiveConstantPowerLoad/index.html @@ -0,0 +1,86 @@ + +ActiveConstantPowerLoad · PowerSystems.jl

ActiveConstantPowerLoad

PowerSystems.ActiveConstantPowerLoadType
mutable struct ActiveConstantPowerLoad <: DynamicInjection
+    name::String
+    r_load::Float64
+    c_dc::Float64
+    rf::Float64
+    lf::Float64
+    cf::Float64
+    rg::Float64
+    lg::Float64
+    kp_pll::Float64
+    ki_pll::Float64
+    kpv::Float64
+    kiv::Float64
+    kpc::Float64
+    kic::Float64
+    base_power::Float64
+    ext::Dict{String, Any}
+    P_ref::Float64
+    Q_ref::Float64
+    V_ref::Float64
+    ω_ref::Float64
+    is_filter_differential::Int
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 12-states active power load based on the paper, "Dynamic Stability of a Microgrid With an Active Load."

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • r_load::Float64: DC-side resistor, validation range: (0, nothing)
  • c_dc::Float64: DC-side capacitor, validation range: (0, nothing)
  • rf::Float64: Converter side filter resistance, validation range: (0, nothing)
  • lf::Float64: Converter side filter inductance, validation range: (0, nothing)
  • cf::Float64: AC Converter filter capacitance, validation range: (0, nothing)
  • rg::Float64: Network side filter resistance, validation range: (0, nothing)
  • lg::Float64: Network side filter inductance, validation range: (0, nothing)
  • kp_pll::Float64: Proportional constant for PI-PLL block, validation range: (0, nothing)
  • ki_pll::Float64: Integral constant for PI-PLL block, validation range: (0, nothing)
  • kpv::Float64: Proportional constant for Voltage Control block, validation range: (0, nothing)
  • kiv::Float64: Integral constant for Voltage Control block, validation range: (0, nothing)
  • kpc::Float64: Proportional constant for Current Control block, validation range: (0, nothing)
  • kic::Float64: Integral constant for Current Control block, validation range: (0, nothing)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • P_ref::Float64: Reference active power (pu)
  • Q_ref::Float64: Reference reactive power (pu)
  • V_ref::Float64: Reference voltage (pu)
  • ω_ref::Float64: Reference frequency (pu)
  • is_filter_differential::Int: Boolean to decide if filter states are differential or algebraic
  • states::Vector{Symbol}: (Do not modify.) The states are:
θ_pll: PLL deviation angle, 
+ϵ_pll: PLL integrator state, 
+η: DC-voltage controller integrator state, 
+v_dc: DC voltage at the capacitor, 
+γd: d-axis Current controller integrator state, 
+γq: q-axis Current controller integrator state, 
+ir_cnv: Real current out of the converter,
+ii_cnv: Imaginary current out of the converter,
+vr_filter: Real voltage at the filter's capacitor,
+vi_filter: Imaginary voltage at the filter's capacitor,
+ir_filter: Real current out of the filter,
+ii_filter: Imaginary current out of the filter
  • n_states::Int: (Do not modify.) ActiveConstantPowerLoad has 12 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_AggregateDistributedGenerationA/index.html b/previews/PR1200/model_library/generated_AggregateDistributedGenerationA/index.html new file mode 100644 index 0000000000..66efe2214e --- /dev/null +++ b/previews/PR1200/model_library/generated_AggregateDistributedGenerationA/index.html @@ -0,0 +1,256 @@ + +AggregateDistributedGenerationA · PowerSystems.jl

AggregateDistributedGenerationA

PowerSystems.AggregateDistributedGenerationAType
mutable struct AggregateDistributedGenerationA <: DynamicInjection
+    name::String
+    Pf_Flag::Int
+    Freq_Flag::Int
+    PQ_Flag::Int
+    Gen_Flag::Int
+    Vtrip_Flag::Int
+    Ftrip_Flag::Int
+    T_rv::Float64
+    Trf::Float64
+    dbd_pnts::Tuple{Float64, Float64}
+    K_qv::Float64
+    Tp::Float64
+    T_iq::Float64
+    D_dn::Float64
+    D_up::Float64
+    fdbd_pnts::Tuple{Float64, Float64}
+    fe_lim::MinMax
+    P_lim::MinMax
+    dP_lim::MinMax
+    Tpord::Float64
+    Kpg::Float64
+    Kig::Float64
+    I_max::Float64
+    vl_pnts::Vector{Tuple{Float64,Float64}}
+    vh_pnts::Vector{Tuple{Float64,Float64}}
+    Vrfrac::Float64
+    fl::Float64
+    fh::Float64
+    tfl::Float64
+    tfh::Float64
+    Tg::Float64
+    rrpwr::Float64
+    Tv::Float64
+    Vpr::Float64
+    Iq_lim::MinMax
+    V_ref::Float64
+    Pfa_ref::Float64
+    ω_ref::Float64
+    Q_ref::Float64
+    P_ref::Float64
+    base_power::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of the DERA1 model in PSS/E

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • Pf_Flag::Int: Flag for Power Factor Control, validation range: (0, 1)
  • Freq_Flag::Int: Flag to enable/disable frequency control, validation range: (0, 1)
  • PQ_Flag::Int: Flag used to enforce maximum current, validation range: (0, 1)
  • Gen_Flag::Int: Flag to specify generator or storage, validation range: (0, 1)
  • Vtrip_Flag::Int: Flag to enable/disable voltage trip logic, validation range: (0, 1)
  • Ftrip_Flag::Int: Flag to enable/disable frequency trip logic, validation range: (0, 1)
  • T_rv::Float64: Voltage measurement transducer time constant, validation range: (0, nothing)
  • Trf::Float64: Frequency measurement transducer time constant, validation range: (0, nothing)
  • dbd_pnts::Tuple{Float64, Float64}: Voltage deadband thresholds (dbd1, dbd2)
  • K_qv::Float64: Proportional voltage control gain (pu), validation range: (0, nothing)
  • Tp::Float64: Power measurement transducer time constant, validation range: (0, nothing)
  • T_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)
  • D_dn::Float64: Reciprocal of droop for over-frequency conditions (>0) (pu), validation range: (0, nothing)
  • D_up::Float64: Reciprocal of droop for under-frequency conditions <=0) (pu), validation range: (0, nothing)
  • fdbd_pnts::Tuple{Float64, Float64}: Frequency control deadband thresholds (fdbd1, fdbd2)
  • fe_lim::MinMax: Frequency error limits (femin, femax)
  • P_lim::MinMax: Power limits (Pmin, Pmax)
  • dP_lim::MinMax: Power reference ramp rate limits (dPmin, dPmax)
  • Tpord::Float64: Power filter time constant, validation range: (0, nothing)
  • Kpg::Float64: PI controller proportional gain (pu), validation range: (0, nothing)
  • Kig::Float64: PI controller integral gain (pu), validation range: (0, nothing)
  • I_max::Float64: Maximum limit on total converter current (pu), validation range: (0, nothing)
  • vl_pnts::Vector{Tuple{Float64,Float64}}: Low voltage cutout points [(tv10, vl0), (tv11, vl1)]
  • vh_pnts::Vector{Tuple{Float64,Float64}}: High voltage cutout points [(tvh0, vh0), (tvh1, vh1)]
  • Vrfrac::Float64: Fraction of device that recovers after voltage comes back to within vl1 < V < vh1 (0 <= Vrfrac <= 1), validation range: (0, 1)
  • fl::Float64: Inverter frequency break-point for low frequency cut-out (Hz), validation range: (0, nothing)
  • fh::Float64: Inverter frequency break-point for high frequency cut-out (Hz), validation range: (0, nothing)
  • tfl::Float64: Low frequency cut-out timer corresponding to frequency fl (s), validation range: (0, nothing)
  • tfh::Float64: High frequency cut-out timer corresponding to frequency fh (s), validation range: (0, nothing)
  • Tg::Float64: Current control time constant (to represent behavior of inner control loops) (> 0) (s), validation range: (0, nothing)
  • rrpwr::Float64: Ramp rate for real power increase following a fault (pu/s), validation range: (0, nothing)
  • Tv::Float64: Time constant on the output of the multiplier (s), validation range: (0, nothing)
  • Vpr::Float64: Voltage below which frequency tripping is disabled (pu), validation range: (0, nothing)
  • Iq_lim::MinMax: Reactive current injection limits (Iqll, Iqhl)
  • V_ref::Float64: (default: 1.0) User defined voltage reference. If 0, PowerSimulationsDynamics.jl initializes to initial terminal voltage, validation range: (0, nothing)
  • Pfa_ref::Float64: (default: 0.0) Reference power factor, validation range: (0, nothing)
  • ω_ref::Float64: (default: 1.0) Reference Frequency (pu), validation range: (0, nothing)
  • Q_ref::Float64: (default: 0.0) Reference reactive power, in pu, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference active power, in pu, validation range: (0, nothing)
  • base_power::Float64: (default: 100.0) Base power (MVA) for per unitization
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of AggregateDistributedGenerationA depends on the Flags
  • n_states::Int: (Do not modify.) The states of AggregateDistributedGenerationA depends on the Flags
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Arc/index.html b/previews/PR1200/model_library/generated_Arc/index.html new file mode 100644 index 0000000000..c33307414c --- /dev/null +++ b/previews/PR1200/model_library/generated_Arc/index.html @@ -0,0 +1,10 @@ + +Arc · PowerSystems.jl

Arc

PowerSystems.ArcType
mutable struct Arc <: Topology
+    from::Bus
+    to::Bus
+    internal::InfrastructureSystemsInternal
+end

A topological directed edge connecting two buses.

Arcs are used to define the from and to buses when defining a line or transformer

Arguments

  • from::Bus: The initial bus
  • to::Bus: The terminal bus
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Area/index.html b/previews/PR1200/model_library/generated_Area/index.html new file mode 100644 index 0000000000..fc834aa7ee --- /dev/null +++ b/previews/PR1200/model_library/generated_Area/index.html @@ -0,0 +1,18 @@ + +Area · PowerSystems.jl

Area

PowerSystems.AreaType
mutable struct Area <: AggregationTopology
+    name::String
+    peak_active_power::Float64
+    peak_reactive_power::Float64
+    load_response::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A collection of buses for control purposes.

The Area can be specified when defining each ACBus or DCBus in the area

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • peak_active_power::Float64: (default: 0.0) Peak active power in the area
  • peak_reactive_power::Float64: (default: 0.0) Peak reactive power in the area
  • load_response::Float64: (default: 0.0) Load-frequency damping parameter modeling how much the load in the area changes due to changes in frequency (MW/Hz). Example here.
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_AreaInterchange/index.html b/previews/PR1200/model_library/generated_AreaInterchange/index.html new file mode 100644 index 0000000000..5e030309f7 --- /dev/null +++ b/previews/PR1200/model_library/generated_AreaInterchange/index.html @@ -0,0 +1,26 @@ + +AreaInterchange · PowerSystems.jl

AreaInterchange

PowerSystems.AreaInterchangeType
mutable struct AreaInterchange <: Branch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    from_area::Area
+    to_area::Area
+    flow_limits::FromTo_ToFrom
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

Flow exchanged between Areas. This Interchange is agnostic to the lines connecting the areas. It does not substitute Interface which is the total flow across a group of lines

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • from_area::Area: Area from which the power is extracted
  • to_area::Area: Area to which the power is injected
  • flow_limits::FromTo_ToFrom: Max flow between the areas. It ignores lines and other branches totals
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_CSVGN1/index.html b/previews/PR1200/model_library/generated_CSVGN1/index.html new file mode 100644 index 0000000000..ee4d78e2cd --- /dev/null +++ b/previews/PR1200/model_library/generated_CSVGN1/index.html @@ -0,0 +1,54 @@ + +CSVGN1 · PowerSystems.jl

CSVGN1

PowerSystems.CSVGN1Type
mutable struct CSVGN1 <: DynamicInjection
+    name::String
+    K::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    T5::Float64
+    Rmin::Float64
+    Vmax::Float64
+    Vmin::Float64
+    CBase::Float64
+    base_power::Float64
+    ext::Dict{String, Any}
+    R_th::Float64
+    X_th::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of static shunt compensator: CSVGN1 in PSSE

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • K::Float64: Gain in pu (DEVICE_BASE), validation range: (0, nothing)
  • T1::Float64: Time constant in s, validation range: (0, nothing)
  • T2::Float64: Time constant in s, validation range: (0, nothing)
  • T3::Float64: Time constant in s, validation range: (eps(), nothing)
  • T4::Float64: Time constant in s, validation range: (0, nothing)
  • T5::Float64: Time constant in s, validation range: (0, nothing)
  • Rmin::Float64: Reactor minimum Mvar, validation range: (0, nothing)
  • Vmax::Float64: Maximum voltage in pu, validation range: (0, nothing)
  • Vmin::Float64: Minimum voltage in pu, validation range: (0, nothing)
  • CBase::Float64: Capacitor (MVAR), validation range: (0, nothing)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • R_th::Float64: Source Thevenin resistance
  • X_th::Float64: Source Thevenin reactance
  • states::Vector{Symbol}: (Do not modify.) The states are:
thy: thyristor,
+vr1: regulator output 1,
+vr2: regulator output 2
  • n_states::Int: (Do not modify.) CSVGN1 has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ConstantReserveNonSpinning/index.html b/previews/PR1200/model_library/generated_ConstantReserveNonSpinning/index.html new file mode 100644 index 0000000000..89f029c6a0 --- /dev/null +++ b/previews/PR1200/model_library/generated_ConstantReserveNonSpinning/index.html @@ -0,0 +1,61 @@ + +ConstantReserveNonSpinning · PowerSystems.jl

ConstantReserveNonSpinning

PowerSystems.ConstantReserveNonSpinningType
mutable struct ConstantReserveNonSpinning <: ReserveNonSpinning
+    name::String
+    available::Bool
+    time_frame::Float64
+    requirement::Float64
+    sustained_time::Float64
+    max_output_fraction::Float64
+    max_participation_factor::Float64
+    deployed_fraction::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A non-spinning reserve product with a constant procurement requirement, such as 3% of the system base power at all times.

This reserve product includes back-up generators that might not be currently synchronized with the power system, but can come online quickly after an unexpected contingency, such as a transmission line or generator outage. This is only an upwards reserve. For faster-responding upwards or downwards reserves from components already synchronized with the system, see ConstantReserve

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time frame in minutes that a participating device must provide its reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)
  • sustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Converter/index.html b/previews/PR1200/model_library/generated_Converter/index.html new file mode 100644 index 0000000000..988e086f7c --- /dev/null +++ b/previews/PR1200/model_library/generated_Converter/index.html @@ -0,0 +1,237 @@ + +Converter · PowerSystems.jl

Converter

AverageConverter

PowerSystems.AverageConverterType
mutable struct AverageConverter <: Converter
+    rated_voltage::Float64
+    rated_current::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of an average converter model

Arguments

  • rated_voltage::Float64: Rated voltage (V), validation range: (0, nothing)
  • rated_current::Float64: Rated current (A), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) AverageConverter has no states
  • n_states::Int: (Do not modify.) AverageConverter has no states
source

RenewableEnergyConverterTypeA

PowerSystems.RenewableEnergyConverterTypeAType
mutable struct RenewableEnergyConverterTypeA <: Converter
+    T_g::Float64
+    Rrpwr::Float64
+    Brkpt::Float64
+    Zerox::Float64
+    Lvpl1::Float64
+    Vo_lim::Float64
+    Lv_pnts::MinMax
+    Io_lim::Float64
+    T_fltr::Float64
+    K_hv::Float64
+    Iqr_lims::MinMax
+    Accel::Float64
+    Lvpl_sw::Int
+    Q_ref::Float64
+    R_source::Float64
+    X_source::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE

Arguments

  • T_g::Float64: Converter time constant (s), validation range: (0, nothing)
  • Rrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)
  • Brkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)
  • Zerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)
  • Lvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)
  • Vo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)
  • Lv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)
  • Io_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)
  • T_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)
  • K_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)
  • Iqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)
  • Accel::Float64: Acceleration factor, validation range: (0, 1)
  • Lvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)
  • Q_ref::Float64: (default: 1.0) Initial condition of reactive power from power flow, validation range: (0, nothing)
  • R_source::Float64: (default: 0.0) Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)
  • X_source::Float64: (default: 1.0e5) Output reactance used for the Thevenin Equivalent, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are: Ip: Converter lag for Ipcmd, Iq: Converter lag for Iqcmd, Vmeas: Voltage filter for low voltage active current management
  • n_states::Int: (Do not modify.) RenewableEnergyConverterTypeA has 3 states
source

RenewableEnergyVoltageConverterTypeA

PowerSystems.RenewableEnergyVoltageConverterTypeAType
mutable struct RenewableEnergyVoltageConverterTypeA <: Converter
+    T_g::Float64
+    Rrpwr::Float64
+    Brkpt::Float64
+    Zerox::Float64
+    Lvpl1::Float64
+    Vo_lim::Float64
+    Lv_pnts::MinMax
+    Io_lim::Float64
+    T_fltr::Float64
+    K_hv::Float64
+    Iqr_lims::MinMax
+    Accel::Float64
+    Lvpl_sw::Int
+    Q_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE, but to be interfaced using a Voltage Source instead of a Current Source

Arguments

  • T_g::Float64: Converter time constant (s), validation range: (0, nothing)
  • Rrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)
  • Brkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)
  • Zerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)
  • Lvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)
  • Vo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)
  • Lv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)
  • Io_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)
  • T_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)
  • K_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)
  • Iqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)
  • Accel::Float64: Acceleration factor, validation range: (0, 1)
  • Lvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)
  • Q_ref::Float64: (default: 1.0) Initial condition of reactive power from power flow, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are: Ip: Converter lag for Ipcmd, Iq: Converter lag for Iqcmd, Vmeas: Voltage filter for low voltage active current management
  • n_states::Int: (Do not modify.) RenewableEnergyVoltageConverterTypeA has 3 states
source
diff --git a/previews/PR1200/model_library/generated_DCBus/index.html b/previews/PR1200/model_library/generated_DCBus/index.html new file mode 100644 index 0000000000..1737f462c0 --- /dev/null +++ b/previews/PR1200/model_library/generated_DCBus/index.html @@ -0,0 +1,29 @@ + +DCBus · PowerSystems.jl

DCBus

PowerSystems.DCBusType
mutable struct DCBus <: Bus
+    number::Int
+    name::String
+    magnitude::Union{Nothing, Float64}
+    voltage_limits::Union{Nothing, MinMax}
+    base_voltage::Union{Nothing, Float64}
+    area::Union{Nothing, Area}
+    load_zone::Union{Nothing, LoadZone}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A DC bus

Arguments

  • number::Int: A unique bus identification number (positive integer)
  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • magnitude::Union{Nothing, Float64}: voltage as a multiple of base_voltage, validation range: voltage_limits
  • voltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of base_voltage
  • base_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing)
  • area::Union{Nothing, Area}: (default: nothing) the area containing the DC bus
  • load_zone::Union{Nothing, LoadZone}: (default: nothing) the load zone containing the DC bus
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_DCSource/index.html b/previews/PR1200/model_library/generated_DCSource/index.html new file mode 100644 index 0000000000..23a7cfb3f7 --- /dev/null +++ b/previews/PR1200/model_library/generated_DCSource/index.html @@ -0,0 +1,61 @@ + +DCSource · PowerSystems.jl

DCSource

FixedDCSource

PowerSystems.FixedDCSourceType
mutable struct FixedDCSource <: DCSource
+    voltage::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Fixed DC Source that returns a fixed DC voltage

Arguments

  • voltage::Float64: Voltage (V), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) FixedDCSource has no states
  • n_states::Int: (Do not modify.) FixedDCSource has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

ZeroOrderBESS

PowerSystems.ZeroOrderBESSType
mutable struct ZeroOrderBESS <: DCSource
+    rated_voltage::Float64
+    rated_current::Float64
+    battery_voltage::Float64
+    battery_resistance::Float64
+    dc_dc_inductor::Float64
+    dc_link_capacitance::Float64
+    fs::Float64
+    kpv::Float64
+    kiv::Float64
+    kpi::Float64
+    kii::Float64
+    Vdc_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters for the DC-side with a Battery Energy Storage System from "Grid-Coupled Dynamic Response of Battery-Driven Voltage Source Converters."

Arguments

  • rated_voltage::Float64: Rated voltage (V), validation range: (0, nothing)
  • rated_current::Float64: Rated current (A), validation range: (0, nothing)
  • battery_voltage::Float64: battery voltage in pu (DEVICE_BASE), validation range: (0, nothing)
  • battery_resistance::Float64: Battery resistance in pu (DEVICE_BASE), validation range: (0, nothing)
  • dc_dc_inductor::Float64: DC/DC inductance in pu (DEVICE_BASE), validation range: (0, nothing)
  • dc_link_capacitance::Float64: DC-link capacitance in pu (DEVICE_BASE), validation range: (0, nothing)
  • fs::Float64: DC/DC converter switching frequency (kHz), validation range: (0, nothing)
  • kpv::Float64: voltage controller proportional gain, validation range: (0, nothing)
  • kiv::Float64: voltage controller integral gain, validation range: (0, nothing)
  • kpi::Float64: current controller proportional gain, validation range: (0, nothing)
  • kii::Float64: current controller integral gain, validation range: (0, nothing)
  • Vdc_ref::Float64: (default: 1.1) Reference DC-Voltage Set-point in pu (DEVICE_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ZeroOrderBESS model are:
v_dc: DC-link voltage,
+i_b: Battery current,
+ ν: integrator state of the voltage controller,
+ ζ: integrator state of the PI current controller
  • n_states::Int: (Do not modify.) ZeroOrderBESS has 4 states
source
diff --git a/previews/PR1200/model_library/generated_DynamicExponentialLoad/index.html b/previews/PR1200/model_library/generated_DynamicExponentialLoad/index.html new file mode 100644 index 0000000000..49dff8bac0 --- /dev/null +++ b/previews/PR1200/model_library/generated_DynamicExponentialLoad/index.html @@ -0,0 +1,35 @@ + +DynamicExponentialLoad · PowerSystems.jl

DynamicExponentialLoad

PowerSystems.DynamicExponentialLoadType
mutable struct DynamicExponentialLoad <: DynamicInjection
+    name::String
+    a::Float64
+    b::Float64
+    α::Float64
+    β::Float64
+    T_p::Float64
+    T_q::Float64
+    ext::Dict{String, Any}
+    base_power::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 2-states of a generic dynamic load model based on "Voltage stability analysis using generic dynamic load models."

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • a::Float64: Active power static exponential coefficient, validation range: (0, nothing)
  • b::Float64: Reactive power static exponential coefficient, validation range: (0, nothing)
  • α::Float64: Active power transient exponential coefficient, validation range: (0, nothing)
  • β::Float64: Reactive power transient exponential coefficient, validation range: (0, nothing)
  • T_p::Float64: Active Power Time Constant, validation range: (0, nothing)
  • T_q::Float64: Reactive Power Time Constant, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • base_power::Float64: Base power of the load (MVA) for per unitization
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p: Integrator state of the active power,
+x_q: Integrator state of the reactive power,
  • n_states::Int: (Do not modify.) DynamicExponentialLoad has 2 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_EnergyReservoirStorage/index.html b/previews/PR1200/model_library/generated_EnergyReservoirStorage/index.html new file mode 100644 index 0000000000..5a8598e581 --- /dev/null +++ b/previews/PR1200/model_library/generated_EnergyReservoirStorage/index.html @@ -0,0 +1,131 @@ + +EnergyReservoirStorage · PowerSystems.jl

EnergyReservoirStorage

PowerSystems.EnergyReservoirStorageType
mutable struct EnergyReservoirStorage <: Storage
+    name::String
+    available::Bool
+    bus::ACBus
+    prime_mover_type::PrimeMovers
+    storage_technology_type::StorageTech
+    storage_capacity::Float64
+    storage_level_limits::MinMax
+    initial_storage_capacity_level::Float64
+    rating::Float64
+    active_power::Float64
+    input_active_power_limits::MinMax
+    output_active_power_limits::MinMax
+    efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}
+    reactive_power::Float64
+    reactive_power_limits::Union{Nothing, MinMax}
+    base_power::Float64
+    operation_cost::StorageCost
+    conversion_factor::Float64
+    storage_target::Float64
+    cycle_limits::Int
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

An energy storage device, modeled as a generic energy reservoir.

This is suitable for modeling storage charging and discharging with average efficiency losses, ignoring the physical dynamics of the storage unit. A variety of energy storage types and chemistries can be modeled with this approach. For pumped hydro storage, alternatively see HydroPumpedStorage

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • storage_technology_type::StorageTech: Storage Technology Complementary to EIA 923. Options are listed here
  • storage_capacity::Float64: Maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen), validation range: (0, nothing)
  • storage_level_limits::MinMax: Minimum and maximum allowable storage levels [0, 1], which can be used to model derates or other restrictions, such as state-of-charge restrictions on battery cycling, validation range: (0, 1)
  • initial_storage_capacity_level::Float64: Initial storage capacity level as a ratio [0, 1.0] of storage_capacity, validation range: (0, 1)
  • rating::Float64: Maximum output power rating of the unit (MVA)
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • input_active_power_limits::MinMax: Minimum and maximum limits on the input active power (i.e., charging), validation range: (0, nothing)
  • output_active_power_limits::MinMax: Minimum and maximum limits on the output active power (i.e., discharging), validation range: (0, nothing)
  • efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}: Average efficiency [0, 1] in (charging/filling) and out (discharging/consuming) of the storage system, validation range: (0, 1)
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • operation_cost::StorageCost: (default: StorageCost(nothing)) OperationalCost of storage
  • conversion_factor::Float64: (default: 1.0) Conversion factor of storage_capacity to MWh, if different than 1.0. For example, X MWh/liter hydrogen
  • storage_target::Float64: (default: 0.0) Storage target at the end of simulation as ratio of storage capacity
  • cycle_limits::Int: (default: 1e4) Storage Maximum number of cycles per year
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ExponentialLoad/index.html b/previews/PR1200/model_library/generated_ExponentialLoad/index.html new file mode 100644 index 0000000000..cd8e46a4b3 --- /dev/null +++ b/previews/PR1200/model_library/generated_ExponentialLoad/index.html @@ -0,0 +1,43 @@ + +ExponentialLoad · PowerSystems.jl

ExponentialLoad

PowerSystems.ExponentialLoadType
mutable struct ExponentialLoad <: StaticLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    α::Float64
+    β::Float64
+    base_power::Float64
+    max_active_power::Float64
+    max_reactive_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A voltage-dependent ZIP load, most commonly used for dynamics modeling.

An ExponentialLoad models active power as P = P0 * V^α and reactive power as Q = Q0 * V^β, where the exponents α and β select govern the voltage dependency. For an alternative three-part formulation of the ZIP model, see StandardLoad. For a simpler load model with no voltage dependency, see PowerLoad

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Active power coefficient, P0 (MW)
  • reactive_power::Float64: Reactive power coefficient, Q0 (MVAR)
  • α::Float64: Exponent relating voltage dependency for active power. 0 = constant power only, 1 = constant current only, and 2 = constant impedance only, validation range: (0, nothing)
  • β::Float64: Exponent relating voltage dependency for reactive power. 0 = constant power only, 1 = constant current only, and 2 = constant impedance only, validation range: (0, nothing)
  • base_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)
  • max_active_power::Float64: Maximum active power (MW) that this load can demand
  • max_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Filter/index.html b/previews/PR1200/model_library/generated_Filter/index.html new file mode 100644 index 0000000000..c68ad24523 --- /dev/null +++ b/previews/PR1200/model_library/generated_Filter/index.html @@ -0,0 +1,62 @@ + +Filter · PowerSystems.jl

Filter

LCFilter

PowerSystems.LCFilterType
mutable struct LCFilter <: Filter
+    lf::Float64
+    rf::Float64
+    cf::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a LCL filter outside the converter

Arguments

  • lf::Float64: filter inductance, validation range: (0, nothing)
  • rf::Float64: filter resistance, validation range: (0, nothing)
  • cf::Float64: filter capacitance, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the LCFilter model are:
ir_filter: Real current out of the filter,
+ii_filter: Imaginary current out of the filter
  • n_states::Int: (Do not modify.) LCFilter has two states
source

LCLFilter

PowerSystems.LCLFilterType
mutable struct LCLFilter <: Filter
+    lf::Float64
+    rf::Float64
+    cf::Float64
+    lg::Float64
+    rg::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a LCL filter outside the converter, the states are in the grid's reference frame

Arguments

  • lf::Float64: Series inductance in p.u. of converter filter, validation range: (0, nothing)
  • rf::Float64: Series resistance in p.u. of converter filter, validation range: (0, nothing)
  • cf::Float64: Shunt capacitance in p.u. of converter filter, validation range: (0, nothing)
  • lg::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)
  • rg::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the LCLFilter model are:
ir_cnv: Real current out of the converter,
+ii_cnv: Imaginary current out of the converter,
+vr_filter: Real voltage at the filter's capacitor,
+vi_filter: Imaginary voltage at the filter's capacitor,
+ir_filter: Real current out of the filter,
+ii_filter: Imaginary current out of the filter
  • n_states::Int: (Do not modify.) LCLFilter has 6 states
source

RLFilter

PowerSystems.RLFilterType
mutable struct RLFilter <: Filter
+    rf::Float64
+    lf::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of RL series filter in algebraic representation

Arguments

  • rf::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)
  • lf::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) RLFilter has zero states
  • n_states::Int: (Do not modify.) RLFilter has zero states
source
diff --git a/previews/PR1200/model_library/generated_FixedAdmittance/index.html b/previews/PR1200/model_library/generated_FixedAdmittance/index.html new file mode 100644 index 0000000000..b5e02507db --- /dev/null +++ b/previews/PR1200/model_library/generated_FixedAdmittance/index.html @@ -0,0 +1,25 @@ + +FixedAdmittance · PowerSystems.jl

FixedAdmittance

PowerSystems.FixedAdmittanceType
mutable struct FixedAdmittance <: ElectricLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    Y::Complex{Float64}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A fixed admittance.

Most often used in dynamics or AC power flow studies as a source of reactive power

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • Y::Complex{Float64}: Fixed admittance in p.u. (SYSTEM_BASE)
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection model for admittance
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_FrequencyEstimator/index.html b/previews/PR1200/model_library/generated_FrequencyEstimator/index.html new file mode 100644 index 0000000000..9d8faf1888 --- /dev/null +++ b/previews/PR1200/model_library/generated_FrequencyEstimator/index.html @@ -0,0 +1,52 @@ + +FrequencyEstimator · PowerSystems.jl

FrequencyEstimator

FixedFrequency

PowerSystems.FixedFrequencyType
mutable struct FixedFrequency <: FrequencyEstimator
+    frequency::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Fixed Frequency Estimator (i.e. no PLL)

Arguments

  • frequency::Float64: (default: 1.0) Reference Frequency (pu)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) FixedFrequency has no states
  • n_states::Int: (Do not modify.) FixedFrequency has no states
source

KauraPLL

PowerSystems.KauraPLLType
mutable struct KauraPLL <: FrequencyEstimator
+    ω_lp::Float64
+    kp_pll::Float64
+    ki_pll::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Phase-Locked Loop (PLL) based on "Operation of a phase locked loop system under distorted utility conditions" by Vikram Kaura, and Vladimir Blasko

Arguments

  • ω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)
  • kp_pll::Float64: PLL proportional gain, validation range: (0, nothing)
  • ki_pll::Float64: PLL integral gain, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the KauraPLL model are:
vd_pll: d-axis of the measured voltage in the PLL synchronous reference frame (SRF),
+vq_pll: q-axis of the measured voltage in the PLL SRF,
+ε_pll: Integrator state of the PI controller,
+θ_pll: Phase angle displacement in the PLL SRF
  • n_states::Int: (Do not modify.) KauraPLL has 4 states
source

ReducedOrderPLL

PowerSystems.ReducedOrderPLLType
mutable struct ReducedOrderPLL <: FrequencyEstimator
+    ω_lp::Float64
+    kp_pll::Float64
+    ki_pll::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Phase-Locked Loop (PLL) based on "Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters."

Arguments

  • ω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)
  • kp_pll::Float64: PLL proportional gain, validation range: (0, nothing)
  • ki_pll::Float64: PLL integral gain, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ReducedOrderPLL model are:
vq_pll: q-axis of the measured voltage in the PLL synchronous reference frame (SRF),
+ε_pll: Integrator state of the PI controller,
+θ_pll: Phase angle displacement in the PLL SRF
  • n_states::Int: (Do not modify.) ReducedOrderPLL has 3 states
source
diff --git a/previews/PR1200/model_library/generated_GenericDER/index.html b/previews/PR1200/model_library/generated_GenericDER/index.html new file mode 100644 index 0000000000..59904c5c6e --- /dev/null +++ b/previews/PR1200/model_library/generated_GenericDER/index.html @@ -0,0 +1,166 @@ + +GenericDER · PowerSystems.jl

GenericDER

PowerSystems.GenericDERType
mutable struct GenericDER <: DynamicInjection
+    name::String
+    Qref_Flag::Int
+    PQ_Flag::Int
+    Gen_Flag::Int
+    PerOp_Flag::Int
+    Recon_Flag::Int
+    Trv::Float64
+    VV_pnts::NamedTuple{(:V1, :V2, :V3, :V4), Tuple{Float64, Float64, Float64, Float64}}
+    Q_lim::MinMax
+    Tp::Float64
+    e_lim::MinMax
+    Kpq::Float64
+    Kiq::Float64
+    Iqr_lim::MinMax
+    I_max::Float64
+    Tg::Float64
+    kWh_Cap::Float64
+    SOC_ini::Float64
+    SOC_lim::MinMax
+    Trf::Float64
+    fdbd_pnts::NamedTuple{(:fdbd1, :fdbd2), Tuple{Float64, Float64}}
+    D_dn::Float64
+    D_up::Float64
+    fe_lim::MinMax
+    Kpp::Float64
+    Kip::Float64
+    P_lim::MinMax
+    dP_lim::MinMax
+    T_pord::Float64
+    rrpwr::Float64
+    VRT_pnts::NamedTuple{(:vrt1, :vrt2, :vrt3, :vrt4, :vrt5), Tuple{Float64, Float64, Float64, Float64, Float64}}
+    TVRT_pnts::NamedTuple{(:tvrt1, :tvrt2, :tvrt3), Tuple{Float64, Float64, Float64}}
+    tV_delay::Float64
+    VES_lim::MinMax
+    FRT_pnts::NamedTuple{(:frt1, :frt2, :frt3, :frt4), Tuple{Float64, Float64, Float64, Float64}}
+    TFRT_pnts::NamedTuple{(:tfrt1, :tfrt2), Tuple{Float64, Float64}}
+    tF_delay::Float64
+    FES_lim::MinMax
+    Pfa_ref::Float64
+    Q_ref::Float64
+    P_ref::Float64
+    base_power::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Generic Distributed Energy Resource Model. Based on "Modeling Framework and Coordination of DER and Flexible Loads for Ancillary Service Provision."

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • Qref_Flag::Int: Reactive Power Control Mode. 1 VoltVar Control, 2 Constant Q Control, 3 Constant PF Control, validation range: (1, 3)
  • PQ_Flag::Int: Active and reactive power priority mode. 0 for Q priority, 1 for P priority, validation range: (0, 1)
  • Gen_Flag::Int: Define generator or storage system. 0 unit is a storage device, 1 unit is a generator, validation range: (0, 1)
  • PerOp_Flag::Int: Defines operation of permisible region in VRT characteristic. 0 for cease, 1 for continuous operation, validation range: (0, 1)
  • Recon_Flag::Int: Defines if DER can reconnect after voltage ride-through disconnection, validation range: (0, 1)
  • Trv::Float64: Voltage measurement transducer's time constant, in s, validation range: (0, nothing)
  • VV_pnts::NamedTuple{(:V1, :V2, :V3, :V4), Tuple{Float64, Float64, Float64, Float64}}: Y-axis Volt-var curve points (V1,V2,V3,V4)
  • Q_lim::MinMax: Reactive power limits in pu (Qmin, Qmax)
  • Tp::Float64: Power measurement transducer's time constant, in s, validation range: (0, nothing)
  • e_lim::MinMax: Error limit in PI controller for q control (emin, emax)
  • Kpq::Float64: PI controller proportional gain for q control, validation range: (0, nothing)
  • Kiq::Float64: PI controller integral gain for q control, validation range: (0, nothing)
  • Iqr_lim::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)
  • I_max::Float64: Max. inverter's current, validation range: (0, nothing)
  • Tg::Float64: Current control's time constant, in s, validation range: (0, nothing)
  • kWh_Cap::Float64: BESS capacity in kWh, validation range: (0, nothing)
  • SOC_ini::Float64: Initial state of charge (SOC) in pu, validation range: (0, 1)
  • SOC_lim::MinMax: Battery's SOC limits (SOCmin, SOCmax)
  • Trf::Float64: Time constant to estimate system frequency, in s, validation range: (0, nothing)
  • fdbd_pnts::NamedTuple{(:fdbd1, :fdbd2), Tuple{Float64, Float64}}: Frequency error dead band thresholds (fdbd1, fdbd2)
  • D_dn::Float64: reciprocal of droop for over-frequency conditions, in pu, validation range: (0, nothing)
  • D_up::Float64: reciprocal of droop for under-frequency conditions, in pu, validation range: (0, nothing)
  • fe_lim::MinMax: Frequency error limits in pu (femin, femax)
  • Kpp::Float64: PI controller proportional gain for p control, validation range: (0, nothing)
  • Kip::Float64: PI controller integral gain for p control, validation range: (0, nothing)
  • P_lim::MinMax: Active power limits in pu (Pmin, Pmax)
  • dP_lim::MinMax: Ramp rate limits for active power in pu/s (dPmin, dPmax)
  • T_pord::Float64: Power filter time constant in s, validation range: (0, nothing)
  • rrpwr::Float64: Ramp rate for real power increase following a fault, in pu/s, validation range: (0, nothing)
  • VRT_pnts::NamedTuple{(:vrt1, :vrt2, :vrt3, :vrt4, :vrt5), Tuple{Float64, Float64, Float64, Float64, Float64}}: Voltage ride through v points (vrt1,vrt2,vrt3,vrt4,vrt5)
  • TVRT_pnts::NamedTuple{(:tvrt1, :tvrt2, :tvrt3), Tuple{Float64, Float64, Float64}}: Voltage ride through time points (tvrt1,tvrt2,tvrt3)
  • tV_delay::Float64: Time delay for reconnection after voltage ride-through disconnection, validation range: (0, nothing)
  • VES_lim::MinMax: Min and max voltage for entering service (VESmin,VESmax)
  • FRT_pnts::NamedTuple{(:frt1, :frt2, :frt3, :frt4), Tuple{Float64, Float64, Float64, Float64}}: Frequency ride through v points (frt1,frt2,frt3,frt4)
  • TFRT_pnts::NamedTuple{(:tfrt1, :tfrt2), Tuple{Float64, Float64}}: Frequency ride through time points (tfrt1,tfrt2)
  • tF_delay::Float64: Time delay for reconnection after frequency ride-through disconnection, validation range: (0, nothing)
  • FES_lim::MinMax: Min and max frequency for entering service (FESmin,FESmax)
  • Pfa_ref::Float64: (default: 0.0) Reference power factor, validation range: (0, nothing)
  • Q_ref::Float64: (default: 0.0) Reference reactive power, in pu, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference active power, in pu, validation range: (0, nothing)
  • base_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization
  • states::Vector{Symbol}: (Do not modify.) The states of GenericDER depend on the Flags
  • n_states::Int: (Do not modify.) The states of GenericDER depend on the Flags
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_HydroDispatch/index.html b/previews/PR1200/model_library/generated_HydroDispatch/index.html new file mode 100644 index 0000000000..318e4b3dcb --- /dev/null +++ b/previews/PR1200/model_library/generated_HydroDispatch/index.html @@ -0,0 +1,62 @@ + +HydroDispatch · PowerSystems.jl

HydroDispatch

PowerSystems.HydroDispatchType
mutable struct HydroDispatch <: HydroGen
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    prime_mover_type::PrimeMovers
+    active_power_limits::MinMax
+    reactive_power_limits::Union{Nothing, MinMax}
+    ramp_limits::Union{Nothing, UpDown}
+    time_limits::Union{Nothing, UpDown}
+    base_power::Float64
+    operation_cost::Union{HydroGenerationCost, MarketBidCost}
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A hydropower generator without a reservoir, suitable for modeling run-of-river hydropower.

For hydro generators with an upper reservoir, see HydroEnergyReservoir

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)
  • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • operation_cost::Union{HydroGenerationCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_HydroEnergyReservoir/index.html b/previews/PR1200/model_library/generated_HydroEnergyReservoir/index.html new file mode 100644 index 0000000000..40a2ffc668 --- /dev/null +++ b/previews/PR1200/model_library/generated_HydroEnergyReservoir/index.html @@ -0,0 +1,105 @@ + +HydroEnergyReservoir · PowerSystems.jl

HydroEnergyReservoir

PowerSystems.HydroEnergyReservoirType
mutable struct HydroEnergyReservoir <: HydroGen
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    prime_mover_type::PrimeMovers
+    active_power_limits::MinMax
+    reactive_power_limits::Union{Nothing, MinMax}
+    ramp_limits::Union{Nothing, UpDown}
+    time_limits::Union{Nothing, UpDown}
+    base_power::Float64
+    storage_capacity::Float64
+    inflow::Float64
+    initial_storage::Float64
+    operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}
+    storage_target::Float64
+    conversion_factor::Float64
+    status::Bool
+    time_at_status::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A hydropower generator with an upper reservoir, offering some energy storage and operational flexibility.

For hydro generators with pumped storage, see HydroPumpedStorage

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)
  • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • storage_capacity::Float64: Maximum storage capacity in the reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)
  • inflow::Float64: Baseline inflow into the reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)
  • initial_storage::Float64: Initial storage capacity in the reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)
  • operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation
  • storage_target::Float64: (default: 1.0) Storage target at the end of simulation as a fraction of storage capacity
  • conversion_factor::Float64: (default: 1.0) Conversion factor from flow/volume to energy: m^3 -> p.u-hr
  • status::Bool: (default: false) Initial commitment condition at the start of a simulation (true = on or false = off)
  • time_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_HydroPumpedStorage/index.html b/previews/PR1200/model_library/generated_HydroPumpedStorage/index.html new file mode 100644 index 0000000000..1829b4b08b --- /dev/null +++ b/previews/PR1200/model_library/generated_HydroPumpedStorage/index.html @@ -0,0 +1,137 @@ + +HydroPumpedStorage · PowerSystems.jl

HydroPumpedStorage

PowerSystems.HydroPumpedStorageType
mutable struct HydroPumpedStorage <: HydroGen
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    base_power::Float64
+    prime_mover_type::PrimeMovers
+    active_power_limits::MinMax
+    reactive_power_limits::Union{Nothing, MinMax}
+    ramp_limits::Union{Nothing, UpDown}
+    time_limits::Union{Nothing, UpDown}
+    rating_pump::Float64
+    active_power_limits_pump::MinMax
+    reactive_power_limits_pump::Union{Nothing, MinMax}
+    ramp_limits_pump::Union{Nothing, UpDown}
+    time_limits_pump::Union{Nothing, UpDown}
+    storage_capacity::UpDown
+    inflow::Float64
+    outflow::Float64
+    initial_storage::UpDown
+    storage_target::UpDown
+    operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}
+    pump_efficiency::Float64
+    conversion_factor::Float64
+    status::PumpHydroStatus
+    time_at_status::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A hydropower generator with pumped storage and upper and lower reservoirs.

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR)
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)
  • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)
  • rating_pump::Float64: Maximum power withdrawal (MVA) of the pump, validation range: (0, nothing)
  • active_power_limits_pump::MinMax:
  • reactive_power_limits_pump::Union{Nothing, MinMax}:
  • ramp_limits_pump::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min of pump, validation range: (0, nothing)
  • time_limits_pump::Union{Nothing, UpDown}: Minimum up and Minimum down time limits of pump in hours, validation range: (0, nothing)
  • storage_capacity::UpDown: Maximum storage capacity in the upper and lower reservoirs (units can be p.u-hr or m^3), validation range: (0, nothing)
  • inflow::Float64: Baseline inflow into the upper reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)
  • outflow::Float64: Baseline outflow from the lower reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)
  • initial_storage::UpDown: Initial storage capacity in the upper and lower reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)
  • storage_target::UpDown: (default: (up=1.0, down=1.0)) Storage target of upper reservoir at the end of simulation as ratio of storage capacity
  • operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation
  • pump_efficiency::Float64: (default: 1.0) Pumping efficiency [0, 1.0], validation range: (0, 1)
  • conversion_factor::Float64: (default: 1.0) Conversion factor from flow/volume to energy: m^3 -> p.u-hr
  • status::PumpHydroStatus: (default: PumpHydroStatus.OFF) Initial commitment condition at the start of a simulation (PumpHydroStatus.PUMP, PumpHydroStatus.GEN, or PumpHydroStatus.OFF)
  • time_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been generating, pumping, or off, as indicated by status
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_InnerControl/index.html b/previews/PR1200/model_library/generated_InnerControl/index.html new file mode 100644 index 0000000000..3ba980b29d --- /dev/null +++ b/previews/PR1200/model_library/generated_InnerControl/index.html @@ -0,0 +1,113 @@ + +InnerControl · PowerSystems.jl

InnerControl

CurrentModeControl

PowerSystems.CurrentModeControlType
mutable struct CurrentModeControl <: InnerControl
+    kpc::Float64
+    kic::Float64
+    kffv::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of an inner loop proportional integral (PI) current control based on "Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters."

Arguments

  • kpc::Float64: Current controller proportional gain, validation range: (0, nothing)
  • kic::Float64: Current controller integral gain, validation range: (0, nothing)
  • kffv::Float64: Gain to enable feed-forward gain of voltage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the CurrentModeControl model are:
γd_ic: d-axis integrator state of the PI current controller,
+γq_ic: q-axis integrator state of the PI current controller
  • n_states::Int: (Do not modify.) CurrentControl has 2 states
source

RECurrentControlB

PowerSystems.RECurrentControlBType
mutable struct RECurrentControlB <: InnerControl
+    Q_Flag::Int
+    PQ_Flag::Int
+    Vdip_lim::MinMax
+    T_rv::Float64
+    dbd_pnts::Tuple{Float64, Float64}
+    K_qv::Float64
+    Iqinj_lim::MinMax
+    V_ref0::Float64
+    K_vp::Float64
+    K_vi::Float64
+    T_iq::Float64
+    I_max::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of the Inner Control part of the REECB model in PSS/E

Arguments

  • Q_Flag::Int: Q Flag used for I_qinj, validation range: (0, 1)
  • PQ_Flag::Int: PQ Flag used for the Current Limit Logic, validation range: (0, 1)
  • Vdip_lim::MinMax: Limits for Voltage Dip Logic (Vdip, Vup)
  • T_rv::Float64: Voltage Filter Time Constant, validation range: (0, nothing)
  • dbd_pnts::Tuple{Float64, Float64}: Voltage error deadband thresholds (dbd1, dbd2)
  • K_qv::Float64: Reactive current injection gain during over and undervoltage conditions, validation range: (0, nothing)
  • Iqinj_lim::MinMax: Limits for Iqinj (I_qh1, I_ql1)
  • V_ref0::Float64: User defined reference. If 0, PowerSimulationsDynamics.jl initializes to initial terminal voltage, validation range: (0, nothing)
  • K_vp::Float64: Voltage regulator proportional gain (used when QFlag = 1), validation range: (0, nothing)
  • K_vi::Float64: Voltage regulator integral gain (used when QFlag = 1), validation range: (0, nothing)
  • T_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)
  • I_max::Float64: Maximum limit on total converter current, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the RECurrentControlB depends on the Flags
  • n_states::Int: (Do not modify.) The states of the RECurrentControlB depends on the Flags
source

VoltageModeControl

PowerSystems.VoltageModeControlType
mutable struct VoltageModeControl <: InnerControl
+    kpv::Float64
+    kiv::Float64
+    kffv::Float64
+    rv::Float64
+    lv::Float64
+    kpc::Float64
+    kic::Float64
+    kffi::Float64
+    ωad::Float64
+    kad::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of an inner loop current control PID using virtual impedance based on "A Virtual Synchronous Machine implementation for distributed control of power converters in SmartGrids."

Arguments

  • kpv::Float64: voltage controller proportional gain, validation range: (0, nothing)
  • kiv::Float64: voltage controller integral gain, validation range: (0, nothing)
  • kffv::Float64: Binary variable to enable feed-forward gain of voltage, validation range: (0, nothing)
  • rv::Float64: virtual resistance, validation range: (0, nothing)
  • lv::Float64: virtual inductance, validation range: (0, nothing)
  • kpc::Float64: current controller proportional gain, validation range: (0, nothing)
  • kic::Float64: current controller integral gain, validation range: (0, nothing)
  • kffi::Float64: Binary variable to enable feed-forward gain of current, validation range: (0, nothing)
  • ωad::Float64: active damping filter cutoff frequency (rad/sec), validation range: (0, nothing)
  • kad::Float64: active damping gain, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the VoltageModeControl model are:
ξd_ic: d-axis integrator state of the PI voltage controller,
+ξq_ic: q-axis integrator state of the PI voltage controller,
+γd_ic: d-axis integrator state of the PI current controller,
+γq_ic: q-axis integrator state of the PI current controller,
+ϕd_ic: d-axis low-pass filter of active damping,
+ϕq_ic: q-axis low-pass filter of active damping
  • n_states::Int: (Do not modify.) VoltageModeControl has 6 states
source
diff --git a/previews/PR1200/model_library/generated_InterconnectingConverter/index.html b/previews/PR1200/model_library/generated_InterconnectingConverter/index.html new file mode 100644 index 0000000000..2150f357d3 --- /dev/null +++ b/previews/PR1200/model_library/generated_InterconnectingConverter/index.html @@ -0,0 +1,68 @@ + +InterconnectingConverter · PowerSystems.jl

InterconnectingConverter

PowerSystems.InterconnectingConverterType
mutable struct InterconnectingConverter <: StaticInjection
+    name::String
+    available::Bool
+    bus::ACBus
+    dc_bus::DCBus
+    active_power::Float64
+    rating::Float64
+    active_power_limits::MinMax
+    base_power::Float64
+    dc_current::Float64
+    max_dc_current::Float64
+    loss_function::Union{LinearCurve, QuadraticCurve}
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

Interconnecting Power Converter (IPC) for transforming power from an ACBus to a DCBus

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus on the AC side of this converter
  • dc_bus::DCBus: Bus on the DC side of this converter
  • active_power::Float64: Active power (MW) on the DC side, validation range: active_power_limits
  • rating::Float64: Maximum output power rating of the converter (MVA), validation range: (0, nothing)
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW)
  • base_power::Float64: Base power of the converter in MVA, validation range: (0, nothing)
  • dc_current::Float64: (default: 0.0) DC current (A) on the converter
  • max_dc_current::Float64: (default: 1e8) Maximum stable dc current limits (A)
  • loss_function::Union{LinearCurve, QuadraticCurve}: (default: LinearCurve(0.0)) Linear or quadratic loss function with respect to the converter current
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_InterruptiblePowerLoad/index.html b/previews/PR1200/model_library/generated_InterruptiblePowerLoad/index.html new file mode 100644 index 0000000000..daa4e08c82 --- /dev/null +++ b/previews/PR1200/model_library/generated_InterruptiblePowerLoad/index.html @@ -0,0 +1,56 @@ + +InterruptiblePowerLoad · PowerSystems.jl

InterruptiblePowerLoad

PowerSystems.InterruptiblePowerLoadType
mutable struct InterruptiblePowerLoad <: ControllableLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    max_active_power::Float64
+    max_reactive_power::Float64
+    base_power::Float64
+    operation_cost::Union{LoadCost, MarketBidCost}
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A static power load that can be compensated for temporary or continuous interruptions to its requested demand.

These loads are most commonly used for operational optimizations and can be used to model, for example, large commercial and industrial customers enrolled in demand response programs. This load has a target demand profile (set by a max_active_power time series for an operational simulation) that can be reduced to satisfy other system needs. For simpler loads without an operating cost for demand response, see PowerLoad

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial steady state active power demand (MW)
  • reactive_power::Float64: Initial steady state reactive power demand (MVAR)
  • max_active_power::Float64: Maximum active power (MW) that this load can demand
  • max_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand
  • base_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)
  • operation_cost::Union{LoadCost, MarketBidCost}: OperationalCost of interrupting load
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Line/index.html b/previews/PR1200/model_library/generated_Line/index.html new file mode 100644 index 0000000000..33026eeb5e --- /dev/null +++ b/previews/PR1200/model_library/generated_Line/index.html @@ -0,0 +1,48 @@ + +Line · PowerSystems.jl

Line

PowerSystems.LineType
mutable struct Line <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    reactive_power_flow::Float64
+    arc::Arc
+    r::Float64
+    x::Float64
+    b::FromTo
+    rating::Float64
+    angle_limits::MinMax
+    g::FromTo
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

An AC transmission line

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • reactive_power_flow::Float64: Initial condition of reactive power flow on the line (MVAR)
  • arc::Arc: An Arc defining this line from a bus to another bus
  • r::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)
  • x::Float64: Reactance in pu (SYSTEM_BASE), validation range: (0, 4)
  • b::FromTo: Shunt susceptance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)
  • rating::Float64: Thermal rating (MVA). Flow on the line must be between -rating and rating. When defining a line before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to
  • angle_limits::MinMax: Minimum and maximum angle limits (radians), validation range: (-1.571, 1.571)
  • g::FromTo: (default: (from=0.0, to=0.0)) Shunt conductance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_LoadZone/index.html b/previews/PR1200/model_library/generated_LoadZone/index.html new file mode 100644 index 0000000000..7774ff0dbd --- /dev/null +++ b/previews/PR1200/model_library/generated_LoadZone/index.html @@ -0,0 +1,15 @@ + +LoadZone · PowerSystems.jl

LoadZone

PowerSystems.LoadZoneType
mutable struct LoadZone <: AggregationTopology
+    name::String
+    peak_active_power::Float64
+    peak_reactive_power::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A load zone for electricity price analysis.

The load zone can be specified when defining each ACBus or DCBus in the zone

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • peak_active_power::Float64: Peak active power in the zone (MW)
  • peak_reactive_power::Float64: Peak reactive power in the zone (MVAR)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Machine/index.html b/previews/PR1200/model_library/generated_Machine/index.html new file mode 100644 index 0000000000..cbc7fcfc69 --- /dev/null +++ b/previews/PR1200/model_library/generated_Machine/index.html @@ -0,0 +1,548 @@ + +Machine · PowerSystems.jl

Machine

AndersonFouadMachine

PowerSystems.AndersonFouadMachineType
mutable struct AndersonFouadMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xq_pp::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 6-states synchronous machine: Anderson-Fouad model

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψq: q-axis stator flux,
+ψd: d-axis stator flux,
+eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage,
+eq_pp: q-axis subtransient voltage,
+ed_pp: d-axis subtransient voltage
  • n_states::Int: (Do not modify.) The states AndersonFouadMachine has 6 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

BaseMachine

PowerSystems.BaseMachineType
mutable struct BaseMachine <: Machine
+    R::Float64
+    Xd_p::Float64
+    eq_p::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Classic Machine: GENCLS in PSSE and PSLF

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd_p::Float64: Reactance after EMF in machine per unit, validation range: (0, nothing)
  • eq_p::Float64: Fixed EMF behind the impedance, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) BaseMachine has no states
  • n_states::Int: (Do not modify.) BaseMachine has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

FullMachine

PowerSystems.FullMachineType
mutable struct FullMachine <: Machine
+    R::Float64
+    R_f::Float64
+    R_1d::Float64
+    R_1q::Float64
+    L_d::Float64
+    L_q::Float64
+    L_ad::Float64
+    L_aq::Float64
+    L_f1d::Float64
+    L_ff::Float64
+    L_1d::Float64
+    L_1q::Float64
+    ext::Dict{String, Any}
+    inv_d_fluxlink::Array{Float64,2}
+    inv_q_fluxlink::Array{Float64,2}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is NOT neglected. Only one q-axis damping circuit is considered. All parameters are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • R_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)
  • R_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski, validation range: (0, nothing)
  • R_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski, validation range: (0, nothing)
  • L_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski), validation range: (0, nothing)
  • L_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur, validation range: (0, nothing)
  • L_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)
  • L_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)
  • L_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)
  • L_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)
  • L_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)
  • L_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • inv_d_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.127, 3.130, 3.131 From Kundur
  • inv_q_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.128, 3.132 From Kundur
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψd: d-axis stator flux,
+ψq: q-axis stator flux,
+ψf: field rotor flux,
+ψ1d: d-axis rotor damping flux,
+ψ1q: q-axis rotor damping flux
  • n_states::Int: (Do not modify.) FullMachine has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

MarconatoMachine

PowerSystems.MarconatoMachineType
mutable struct MarconatoMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xq_pp::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    T_AA::Float64
+    ext::Dict{String, Any}
+    γd::Float64
+    γq::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 6-states synchronous machine: Marconato model

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • T_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • γd::Float64: (Do not modify.) Internal equation
  • γq::Float64: (Do not modify.) Internal equation
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψq: q-axis stator flux,
+ψd: d-axis stator flux,
+eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage,
+eq_pp: q-axis subtransient voltage,
+ed_pp: d-axis subtransient voltage
  • n_states::Int: (Do not modify.) MarconatoMachine has 6 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

OneDOneQMachine

PowerSystems.OneDOneQMachineType
mutable struct OneDOneQMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage
  • n_states::Int: (Do not modify.) OneDOneQMachine has 2 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

RoundRotorExponential

PowerSystems.RoundRotorExponentialType
mutable struct RoundRotorExponential <: Machine
+    base_machine::RoundRotorMachine
+    saturation_coeffs::Tuple{Float64, Float64}

4-states round-rotor synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROE model in PSSE and PSLF.

Arguments

  • base_machine::RoundRotorMachine: Round Rotor Machine model.
  • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.
source

RoundRotorMachine

PowerSystems.RoundRotorMachineType
mutable struct RoundRotorMachine <: Machine
+    R::Float64
+    Td0_p::Float64
+    Td0_pp::Float64
+    Tq0_p::Float64
+    Tq0_pp::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xl::Float64
+    Se::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    γ_d1::Float64
+    γ_q1::Float64
+    γ_d2::Float64
+    γ_q2::Float64
+    γ_qd::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 4-states round-rotor synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU or GENROE model in PSSE and PSLF

Arguments

  • R::Float64: Armature resistance, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)
  • Xl::Float64: Stator leakage reactance, validation range: (0, nothing)
  • Se::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: S(1.0) = B(|ψ_pp|-A)^2
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • γ_d1::Float64: (Do not modify.) γ_d1 parameter
  • γ_q1::Float64: (Do not modify.) γ_q1 parameter
  • γ_d2::Float64: (Do not modify.) γ_d2 parameter
  • γ_q2::Float64: (Do not modify.) γ_q2 parameter
  • γ_qd::Float64: (Do not modify.) γ_qd parameter
  • states::Vector{Symbol}: (Do not modify.) The states are:
eq_p: q-axis generator voltage behind the transient reactance,
+ed_p: d-axis generator voltage behind the transient reactance,
+ψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,
+ψ_kq: flux linkage in the first equivalent damping circuit in the d-axis
  • n_states::Int: (Do not modify.) RoundRotorMachine has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

RoundRotorQuadratic

PowerSystems.RoundRotorQuadraticType
mutable struct RoundRotorQuadratic <: Machine
+    base_machine::RoundRotorMachine
+    saturation_coeffs::Tuple{Float64, Float64}

4-states round-rotor synchronous machine with quadratic saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU model in PSSE and PSLF.

Arguments

  • base_machine::RoundRotorMachine: Round Rotor Machine model.
  • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.
source

SalientPoleExponential

PowerSystems.SalientPoleExponentialType
mutable struct SalientPoleExponential <: Machine
+    base_machine::SalientPoleMachine
+    saturation_coeffs::Tuple{Float64, Float64}

3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAE in PSSE and PSLF.

Arguments:

  • base_machine::SalientPoleMachine: Salient Pole Machine model.
  • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.
source

SalientPoleMachine

PowerSystems.SalientPoleMachineType
mutable struct SalientPoleMachine <: Machine
+    R::Float64
+    Td0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xd_pp::Float64
+    Xl::Float64
+    Se::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    γ_d1::Float64
+    γ_q1::Float64
+    γ_d2::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 3-states salient-pole synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.1 (Model 2.1). GENSAL or GENSAE model in PSSE and PSLF

Arguments

  • R::Float64: Armature resistance, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)
  • Xl::Float64: Stator leakage reactance, validation range: (0, nothing)
  • Se::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: Se(eqp) = B(eqp-A)^2
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • γ_d1::Float64: (Do not modify.) γ_d1 parameter
  • γ_q1::Float64: (Do not modify.) γ_q1 parameter
  • γ_d2::Float64: (Do not modify.) γ_d2 parameter
  • states::Vector{Symbol}: (Do not modify.) The states are:
eq_p: q-axis generator voltage behind the transient reactance,
+ψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,
+ψq_pp: phasonf of the subtransient flux linkage in the q-axis
  • n_states::Int: (Do not modify.) SalientPoleMachine has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SalientPoleQuadratic

PowerSystems.SalientPoleQuadraticType
mutable struct SalientPoleQuadratic <: Machine
+    base_machine::SalientPoleMachine
+    saturation_coeffs::Tuple{Float64, Float64}

3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAL in PSSE and PSLF.

Arguments:

  • base_machine::SalientPoleMachine: Salient Pole Machine model.
  • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.
source

SauerPaiMachine

PowerSystems.SauerPaiMachineType
mutable struct SauerPaiMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xq_pp::Float64
+    Xl::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    ext::Dict{String, Any}
+    γ_d1::Float64
+    γ_q1::Float64
+    γ_d2::Float64
+    γ_q2::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of synchronous machine: Sauer Pai model

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xl::Float64: Stator Leakage Reactance, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • γ_d1::Float64: (Do not modify.) Internal equation
  • γ_q1::Float64: (Do not modify.) Internal equation
  • γ_d2::Float64: (Do not modify.) Internal equation
  • γ_q2::Float64: (Do not modify.) Internal equation
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψq: q-axis stator flux,
+ψd: d-axis stator flux,
+eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage
+ψd_pp: subtransient flux linkage in the d-axis
+ψq_pp: subtransient flux linkage in the q-axis
  • n_states::Int: (Do not modify.) SauerPaiMachine has 6 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SimpleAFMachine

PowerSystems.SimpleAFMachineType
mutable struct SimpleAFMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xq_pp::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 4-states simplified Anderson-Fouad (SimpleAFMachine) model. The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected. If transmission dynamics is considered use the full order Anderson Fouad model

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage,
+eq_pp: q-axis subtransient voltage,
+ed_pp: d-axis subtransient voltage
  • n_states::Int: (Do not modify.) SimpleAFMachine has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SimpleFullMachine

PowerSystems.SimpleFullMachineType
mutable struct SimpleFullMachine <: Machine
+    R::Float64
+    R_f::Float64
+    R_1d::Float64
+    R_1q::Float64
+    L_d::Float64
+    L_q::Float64
+    L_ad::Float64
+    L_aq::Float64
+    L_f1d::Float64
+    L_ff::Float64
+    L_1d::Float64
+    L_1q::Float64
+    ext::Dict{String, Any}
+    inv_d_fluxlink::Array{Float64,2}
+    inv_q_fluxlink::Array{Float64,2}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is neglected. This is standard when transmission network dynamics is neglected. Only one q-axis damping circuit is considered. All per unit are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • R_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)
  • R_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski, validation range: (0, nothing)
  • R_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski, validation range: (0, nothing)
  • L_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski), validation range: (0, nothing)
  • L_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur, validation range: (0, nothing)
  • L_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)
  • L_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)
  • L_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)
  • L_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)
  • L_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)
  • L_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • inv_d_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.127, 3.130, 3.131 From Kundur
  • inv_q_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.128, 3.132 From Kundur
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψf: field rotor flux,
+ψ1d: d-axis rotor damping flux,
+ψ1q: q-axis rotor damping flux
  • n_states::Int: (Do not modify.) SimpleFullMachine has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SimpleMarconatoMachine

PowerSystems.SimpleMarconatoMachineType
mutable struct SimpleMarconatoMachine <: Machine
+    R::Float64
+    Xd::Float64
+    Xq::Float64
+    Xd_p::Float64
+    Xq_p::Float64
+    Xd_pp::Float64
+    Xq_pp::Float64
+    Td0_p::Float64
+    Tq0_p::Float64
+    Td0_pp::Float64
+    Tq0_pp::Float64
+    T_AA::Float64
+    ext::Dict{String, Any}
+    γd::Float64
+    γq::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected

Arguments

  • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
  • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
  • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
  • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
  • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
  • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
  • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
  • T_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • γd::Float64: (Do not modify.) Internal equation
  • γq::Float64: (Do not modify.) Internal equation
  • states::Vector{Symbol}: (Do not modify.) The states are:
eq_p: q-axis transient voltage,
+ed_p: d-axis transient voltage,
+eq_pp: q-axis subtransient voltage,
+ed_pp: d-axis subtransient voltage
  • n_states::Int: (Do not modify.) SimpleMarconatoMachine has 4 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_MonitoredLine/index.html b/previews/PR1200/model_library/generated_MonitoredLine/index.html new file mode 100644 index 0000000000..8e7f8d4b7b --- /dev/null +++ b/previews/PR1200/model_library/generated_MonitoredLine/index.html @@ -0,0 +1,53 @@ + +MonitoredLine · PowerSystems.jl

MonitoredLine

PowerSystems.MonitoredLineType
mutable struct MonitoredLine <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    reactive_power_flow::Float64
+    arc::Arc
+    r::Float64
+    x::Float64
+    b::FromTo
+    flow_limits::FromTo_ToFrom
+    rating::Float64
+    angle_limits::MinMax
+    g::FromTo
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

An AC transmission line with additional power flow constraints specified by the system operator, more restrictive than the line's thermal limits.

For example, monitored lines can be used to restrict line flow following a contingency elsewhere in the network. See the flow_limits parameter. If monitoring is not needed, see Line

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • reactive_power_flow::Float64: Initial condition of reactive power flow on the line (MVAR)
  • arc::Arc: An Arc defining this line from a bus to another bus
  • r::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)
  • x::Float64: Reactance in pu (SYSTEM_BASE), validation range: (0, 4)
  • b::FromTo: Shunt susceptance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 2)
  • flow_limits::FromTo_ToFrom: Minimum and maximum permissable flow on the line (MVA), if different from the thermal rating defined in rating
  • rating::Float64: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a line before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to
  • angle_limits::MinMax: Minimum and maximum angle limits (radians), validation range: (-1.571, 1.571)
  • g::FromTo: (default: (from=0.0, to=0.0)) Shunt conductance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_OutputCurrentLimiter/index.html b/previews/PR1200/model_library/generated_OutputCurrentLimiter/index.html new file mode 100644 index 0000000000..14a6124795 --- /dev/null +++ b/previews/PR1200/model_library/generated_OutputCurrentLimiter/index.html @@ -0,0 +1,78 @@ + +OutputCurrentLimiter · PowerSystems.jl

OutputCurrentLimiter

HybridOutputCurrentLimiter

PowerSystems.HybridOutputCurrentLimiterType
mutable struct HybridOutputCurrentLimiter <: OutputCurrentLimiter
+    I_max::Float64
+    rv::Float64
+    lv::Float64
+    ext::Dict{String, Any}
+end

Parameters of Hybrid Current Controller Limiter. Regulates the magnitude of the inverter output current, but with a closed loop feedback regulated by a virtual impedance which provides ant-windup. Described in: Novel Hybrid Current Limiter for Grid-Forming Inverter Control During Unbalanced Faults by Baeckland and Seo, 2023

Arguments

  • I_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)
  • rv::Float64: Real part of the virtual impedance, validation range: (0, nothing)
  • lv::Float64: Imaginary part of the virtual impedance, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}())
source

InstantaneousOutputCurrentLimiter

PowerSystems.InstantaneousOutputCurrentLimiterType
mutable struct InstantaneousOutputCurrentLimiter <: OutputCurrentLimiter
+    Id_max::Float64
+    Iq_max::Float64
+    ext::Dict{String, Any}
+end

Parameters of Instantaneous (Square) Current Controller Limiter. Regulates inverter output current on the d and q axis separately

Arguments

  • Id_max::Float64: Maximum limit on d-axis current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)
  • Iq_max::Float64: Maximum limit on d-axis current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
source

MagnitudeOutputCurrentLimiter

PowerSystems.MagnitudeOutputCurrentLimiterType
mutable struct MagnitudeOutputCurrentLimiter <: OutputCurrentLimiter
+    I_max::Float64
+    ext::Dict{String, Any}
+end

Parameters of Magnitude (Circular) Current Controller Limiter. Regulates only the magnitude of the inverter output current

Arguments

  • I_max::Float64: Maximum limit on current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
source

PriorityOutputCurrentLimiter

PowerSystems.PriorityOutputCurrentLimiterType
mutable struct PriorityOutputCurrentLimiter <: OutputCurrentLimiter
+    I_max::Float64
+    ϕ_I::Float64
+    ext::Dict{String, Any}
+end

Parameters of Priority-Based Current Controller Limiter. Regulates the magnitude of the inverter output current and prioritizes a specific angle for the resultant current signal

Arguments

  • I_max::Float64: Maximum limit on current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)
  • ϕ_I::Float64: Pre-defined angle (measured against the d-axis) for Iref once limit Imax is hit, validation range: (-1.571, 1.571)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
source

SaturationOutputCurrentLimiter

PowerSystems.SaturationOutputCurrentLimiterType
mutable struct SaturationOutputCurrentLimiter <: OutputCurrentLimiter
+    I_max::Float64
+    kw::Float64
+    ext::Dict{String, Any}
+end

Parameters of Saturation Current Controller Limiter. Regulates the magnitude of the inverter output current, and applies a closed loop feedback regulated by a static gain which provides ant-windup

Arguments

  • I_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)
  • kw::Float64: Defined feedback gain, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}())
source
diff --git a/previews/PR1200/model_library/generated_PSS/index.html b/previews/PR1200/model_library/generated_PSS/index.html new file mode 100644 index 0000000000..a7667258cf --- /dev/null +++ b/previews/PR1200/model_library/generated_PSS/index.html @@ -0,0 +1,463 @@ + +PSS · PowerSystems.jl

PSS

IEEEST

PowerSystems.IEEESTType
mutable struct IEEEST <: PSS
+    input_code::Int
+    remote_bus_control::Int
+    A1::Float64
+    A2::Float64
+    A3::Float64
+    A4::Float64
+    A5::Float64
+    A6::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    T5::Float64
+    T6::Float64
+    Ks::Float64
+    Ls_lim::Tuple{Float64, Float64}
+    Vcu::Float64
+    Vcl::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

IEEE Stabilizing Model PSS.

Arguments

  • input_code::Int: Code input for stabilizer, validation range: (1, 6)
  • remote_bus_control::Int: ACBus identification number for control. 0 identifies the bus connected to this component
  • A1::Float64: Filter coefficient, validation range: (0, nothing)
  • A2::Float64: Filter coefficient, validation range: (0, nothing)
  • A3::Float64: Filter coefficient, validation range: (0, nothing)
  • A4::Float64: Filter coefficient, validation range: (0, nothing)
  • A5::Float64: Filter coefficient, validation range: (0, nothing)
  • A6::Float64: Filter coefficient, validation range: (0, nothing)
  • T1::Float64: Time constant, validation range: (0, 10)
  • T2::Float64: Time constant, validation range: (0, 10)
  • T3::Float64: Time constant, validation range: (0, 10)
  • T4::Float64: Time constant, validation range: (0, 10)
  • T5::Float64: Time constant, validation range: (0, 10)
  • T6::Float64: Time constant, validation range: (eps(), 2.0)
  • Ks::Float64: Proportional gain, validation range: (0, nothing)
  • Ls_lim::Tuple{Float64, Float64}: PSS output limits for regulator output (Ls_min, Ls_max)
  • Vcu::Float64: Cutoff limiter upper bound, validation range: (0, 1.25)
  • Vcl::Float64: Cutoff limiter lower bound, validation range: (0, 1.0)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p1: 1st filter integration,
+x_p2: 2nd filter integration, 
+x_p3: 3rd filter integration, 
+x_p4: 4rd filter integration, 
+x_p5: T1/T2 lead-lag integrator, 
+x_p6: T3/T4 lead-lag integrator, 
+:x_p7 last integer,
  • n_states::Int: (Do not modify.) IEEEST has 7 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEEST has 7 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PSS2A

PowerSystems.PSS2AType
mutable struct PSS2A <: PSS
+    input_code_1::Int
+    remote_bus_control_1::Int
+    input_code_2::Int
+    remote_bus_control_2::Int
+    M_rtf::Int
+    N_rtf::Int
+    Tw1::Float64
+    Tw2::Float64
+    T6::Float64
+    Tw3::Float64
+    Tw4::Float64
+    T7::Float64
+    Ks2::Float64
+    Ks3::Float64
+    T8::Float64
+    T9::Float64
+    Ks1::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    Vst_lim::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

IEEE Dual-Input Stabilizer Model

Arguments

  • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 6)
  • remote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)
  • remote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)
  • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)
  • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)
  • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)
  • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)
  • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)
  • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)
  • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)
  • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)
  • Ks3::Float64: Gain for second input, validation range: (0, nothing)
  • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)
  • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)
  • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)
  • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p1: 1st washout 1st input, 
+x_p2: 2nd washout 1st input, 
+x_p3: transducer 1st input, 
+x_p4: 1st washout 2nd input, 
+x_p5: 2nd washout 2nd input, 
+x_p6: transducer 2nd input, 
+x_p7: ramp tracking filter state 1, 
+x_p8: ramp tracking filter state 2, 
+x_p9: ramp tracking filter state 3, 
+x_p10: ramp tracking filter state 4, 
+x_p11: ramp tracking filter state 5, 
+x_p12: ramp tracking filter state 6, 
+x_p13: ramp tracking filter state 7, 
+x_p14: ramp tracking filter state 8, 
+x_p15: 1st lead-lag, 
+x_p16: 2nd lead-lag,
  • n_states::Int: (Do not modify.) IEEEST has 16 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEEST has 16 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PSS2B

PowerSystems.PSS2BType
mutable struct PSS2B <: PSS
+    input_code_1::Int
+    remote_bus_control_1::Int
+    input_code_2::Int
+    remote_bus_control_2::Int
+    M_rtf::Int
+    N_rtf::Int
+    Tw1::Float64
+    Tw2::Float64
+    T6::Float64
+    Tw3::Float64
+    Tw4::Float64
+    T7::Float64
+    Ks2::Float64
+    Ks3::Float64
+    T8::Float64
+    T9::Float64
+    Ks1::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    T10::Float64
+    T11::Float64
+    Vs1_lim::Tuple{Float64, Float64}
+    Vs2_lim::Tuple{Float64, Float64}
+    Vst_lim::Tuple{Float64, Float64}
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

IEEE 421.5 2005 PSS2B IEEE Dual-Input Stabilizer Model

Arguments

  • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 6)
  • remote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)
  • remote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)
  • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)
  • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)
  • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)
  • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)
  • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)
  • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)
  • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)
  • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)
  • Ks3::Float64: Gain for second input, validation range: (0, nothing)
  • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)
  • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)
  • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)
  • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • T10::Float64: Time constant for third lead-lag block, validation range: (0, nothing)
  • T11::Float64: Time constant for third lead-lag block, validation range: (0, nothing)
  • Vs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)
  • Vs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)
  • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p1: 1st washout 1st input, 
+x_p2: 2nd washout 1st input, 
+x_p3: transducer 1st input, 
+x_p4: 1st washout 2nd input, 
+x_p5: 2nd washout 2nd input, 
+x_p6: transducer 2nd input, 
+x_p7: ramp tracking filter state 1, 
+x_p8: ramp tracking filter state 2, 
+x_p9: ramp tracking filter state 3, 
+x_p10: ramp tracking filter state 4, 
+x_p11: ramp tracking filter state 5, 
+x_p12: ramp tracking filter state 6, 
+x_p13: ramp tracking filter state 7, 
+x_p14: ramp tracking filter state 8, 
+x_p15: 1st lead-lag, 
+x_p16: 2nd lead-lag, 
+x_p17: 3rd lead-lag,
  • n_states::Int: (Do not modify.) IEEEST has 17 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEEST has 17 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PSS2C

PowerSystems.PSS2CType
mutable struct PSS2C <: PSS
+    input_code_1::Int
+    remote_bus_control_1::Int
+    input_code_2::Int
+    remote_bus_control_2::Int
+    M_rtf::Int
+    N_rtf::Int
+    Tw1::Float64
+    Tw2::Float64
+    T6::Float64
+    Tw3::Float64
+    Tw4::Float64
+    T7::Float64
+    Ks2::Float64
+    Ks3::Float64
+    T8::Float64
+    T9::Float64
+    Ks1::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    T4::Float64
+    T10::Float64
+    T11::Float64
+    Vs1_lim::Tuple{Float64, Float64}
+    Vs2_lim::Tuple{Float64, Float64}
+    Vst_lim::Tuple{Float64, Float64}
+    T12::Float64
+    T13::Float64
+    PSS_Hysteresis_param::Tuple{Float64, Float64}
+    Xcomp::Float64
+    Tcomp::Float64
+    hysteresis_binary_logic::Int
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

IEEE 421.5 2016 PSS2C IEEE Dual-Input Stabilizer Model

Arguments

  • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 7)
  • remote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)
  • remote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component
  • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)
  • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)
  • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)
  • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)
  • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)
  • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)
  • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)
  • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)
  • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)
  • Ks3::Float64: Gain for second input, validation range: (0, nothing)
  • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)
  • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)
  • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)
  • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)
  • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)
  • T10::Float64: Time constant for third lead-lag block, validation range: (0, nothing)
  • T11::Float64: Time constant for third lead-lag block, validation range: (0, nothing)
  • Vs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)
  • Vs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)
  • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
  • T12::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing)
  • T13::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing)
  • PSS_Hysteresis_param::Tuple{Float64, Float64}: PSS output hysteresis parameters (PSSOFF, PSSON)
  • Xcomp::Float64: Stator Leakage Reactance, validation range: (0, nothing)
  • Tcomp::Float64: Time measured with compensated frequency, validation range: (eps(), nothing)
  • hysteresis_binary_logic::Int: (default: 1) Hysteresis memory variable
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p1: 1st washout 1st input, 
+x_p2: 2nd washout 1st input, 
+x_p3: transducer 1st input, 
+x_p4: 1st washout 2nd input, 
+x_p5: 2nd washout 2nd input, 
+x_p6: transducer 2nd input, 
+x_p7: ramp tracking filter state 1, 
+x_p8: ramp tracking filter state 2, 
+x_p9: ramp tracking filter state 3, 
+x_p10: ramp tracking filter state 4, 
+x_p11: ramp tracking filter state 5, 
+x_p12: ramp tracking filter state 6, 
+x_p13: ramp tracking filter state 7, 
+x_p14: ramp tracking filter state 8, 
+x_p15: 1st lead-lag, 
+x_p16: 2nd lead-lag, 
+x_p17: 3rd lead-lag, 
+x_p18: 4th lead-lag, 
+x_p19: washout block for compensated frequency,
  • n_states::Int: (Do not modify.) IEEEST has 19 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEEST has 19 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PSSFixed

PowerSystems.PSSFixedType
mutable struct PSSFixed <: PSS
+    V_pss::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a PSS that returns a fixed voltage to add to the reference for the AVR

Arguments

  • V_pss::Float64: Fixed voltage stabilization signal in pu (DEVICE_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) PSSFixed has no states
  • n_states::Int: (Do not modify.) PSSFixed has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PSSSimple

PowerSystems.PSSSimpleType
mutable struct PSSSimple <: PSS
+    K_ω::Float64
+    K_p::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a PSS that returns a proportional droop voltage to add to the reference for the AVR

Arguments

  • K_ω::Float64: Proportional gain for frequency, validation range: (0, nothing)
  • K_p::Float64: Proportional gain for active power, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) PSSSimple has no states
  • n_states::Int: (Do not modify.) PSSSimple has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

STAB1

PowerSystems.STAB1Type
mutable struct STAB1 <: PSS
+    KT::Float64
+    T::Float64
+    T1T3::Float64
+    T3::Float64
+    T2T4::Float64
+    T4::Float64
+    H_lim::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Speed-Sensitive Stabilizing Model

Arguments

  • KT::Float64: K/T for washout filter, validation range: (0, nothing)
  • T::Float64: Time constant for washout filter, validation range: (0.01, nothing)
  • T1T3::Float64: Time constant division T1/T3, validation range: (0, nothing)
  • T3::Float64: Time constant, validation range: (0.01, nothing)
  • T2T4::Float64: Time constant division T2/T4, validation range: (0, nothing)
  • T4::Float64: Time constant, validation range: (0.01, nothing)
  • H_lim::Float64: PSS output limit, validation range: (0, 0.5)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
x_p1: washout filter,
+x_p2: T1/T3 lead-lag block, 
+x_p3: T2/T4 lead-lag block,
  • n_states::Int: (Do not modify.) STAB1 has 3 states
  • states_types::Vector{StateTypes}: (Do not modify.) STAB1 has 3 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_PeriodicVariableSource/index.html b/previews/PR1200/model_library/generated_PeriodicVariableSource/index.html new file mode 100644 index 0000000000..868b38a171 --- /dev/null +++ b/previews/PR1200/model_library/generated_PeriodicVariableSource/index.html @@ -0,0 +1,70 @@ + +PeriodicVariableSource · PowerSystems.jl

PeriodicVariableSource

PowerSystems.PeriodicVariableSourceType
mutable struct PeriodicVariableSource <: DynamicInjection
+    name::String
+    R_th::Float64
+    X_th::Float64
+    internal_voltage_bias::Float64
+    internal_voltage_frequencies::Vector{Float64}
+    internal_voltage_coefficients::Vector{Tuple{Float64,Float64}}
+    internal_angle_bias::Float64
+    internal_angle_frequencies::Vector{Float64}
+    internal_angle_coefficients::Vector{Tuple{Float64,Float64}}
+    base_power::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

This struct acts as an infinity bus with time varying phasor values magnitude and angle V(t) heta(t). Time varying functions are represented using fourier series

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • R_th::Float64: Source Thevenin resistance, validation range: (0, nothing)
  • X_th::Float64: Source Thevenin reactance, validation range: (0, nothing)
  • internal_voltage_bias::Float64: (default: 0.0) a0 term of the Fourier Series for the voltage
  • internal_voltage_frequencies::Vector{Float64}: (default: [0.0]) Frequencies in radians/s
  • internal_voltage_coefficients::Vector{Tuple{Float64,Float64}}: (default: [(0.0, 0.0)]) Coefficients for terms n > 1. First component corresponds to sin and second component to cos
  • internal_angle_bias::Float64: (default: 0.0) a0 term of the Fourier Series for the angle
  • internal_angle_frequencies::Vector{Float64}: (default: [0.0]) Frequencies in radians/s
  • internal_angle_coefficients::Vector{Tuple{Float64,Float64}}: (default: [(0.0, 0.0)]) Coefficients for terms n > 1. First component corresponds to sin and second component to cos
  • base_power::Float64: (default: 100.0) Base power of the source (MVA) for per unitization
  • states::Vector{Symbol}: (Do not modify.) The states for time, voltage and angle
  • n_states::Int: (Do not modify.) PeriodicVariableSource has 2 states
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_PhaseShiftingTransformer/index.html b/previews/PR1200/model_library/generated_PhaseShiftingTransformer/index.html new file mode 100644 index 0000000000..af01890e2e --- /dev/null +++ b/previews/PR1200/model_library/generated_PhaseShiftingTransformer/index.html @@ -0,0 +1,69 @@ + +PhaseShiftingTransformer · PowerSystems.jl

PhaseShiftingTransformer

PowerSystems.PhaseShiftingTransformerType
mutable struct PhaseShiftingTransformer <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    reactive_power_flow::Float64
+    arc::Arc
+    r::Float64
+    x::Float64
+    primary_shunt::Float64
+    tap::Float64
+    α::Float64
+    rating::Union{Nothing, Float64}
+    phase_angle_limits::MinMax
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A phase-shifting transformer regulating the phase angle between two buses to control active power flow in the system.

The model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow through the transformer (MW)
  • reactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)
  • arc::Arc: An Arc defining this transformer from a bus to another bus
  • r::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)
  • x::Float64: Reactance in pu (SYSTEM_BASE), validation range: (-2, 4)
  • primary_shunt::Float64:, validation range: (0, 2)
  • tap::Float64: Normalized tap changer position for voltage control, varying between 0 and 2, with 1 centered at the nominal voltage, validation range: (0, 2)
  • α::Float64: Initial condition of phase shift (radians) between the from and to buses , validation range: (-1.571, 1.571)
  • rating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)
  • phase_angle_limits::MinMax: (default: (min=-1.571, max=1.571)) Minimum and maximum phase angle limits (radians), validation range: (-1.571, 1.571)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_PowerLoad/index.html b/previews/PR1200/model_library/generated_PowerLoad/index.html new file mode 100644 index 0000000000..8280e14ab2 --- /dev/null +++ b/previews/PR1200/model_library/generated_PowerLoad/index.html @@ -0,0 +1,37 @@ + +PowerLoad · PowerSystems.jl

PowerLoad

PowerSystems.PowerLoadType
mutable struct PowerLoad <: StaticLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    base_power::Float64
+    max_active_power::Float64
+    max_reactive_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A static power load, most commonly used for operational models such as power flow and operational optimizations.

This load consumes a set amount of power (set by active_power for a power flow simulation or a max_active_power time series for an operational simulation). For loads that can be compensated for load interruptions through demand response programs, see InterruptiblePowerLoad. For voltage-dependent loads used in dynamics modeling, see StandardLoad

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial steady-state active power demand (MW)
  • reactive_power::Float64: Initial steady-state reactive power demand (MVAR)
  • base_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)
  • max_active_power::Float64: Maximum active power (MW) that this load can demand
  • max_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_RenewableDispatch/index.html b/previews/PR1200/model_library/generated_RenewableDispatch/index.html new file mode 100644 index 0000000000..e7f4bb076a --- /dev/null +++ b/previews/PR1200/model_library/generated_RenewableDispatch/index.html @@ -0,0 +1,55 @@ + +RenewableDispatch · PowerSystems.jl

RenewableDispatch

PowerSystems.RenewableDispatchType
mutable struct RenewableDispatch <: RenewableGen
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    prime_mover_type::PrimeMovers
+    reactive_power_limits::Union{Nothing, MinMax}
+    power_factor::Float64
+    operation_cost::Union{RenewableGenerationCost, MarketBidCost}
+    base_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A renewable (e.g., wind or solar) generator whose output can be curtailed to satisfy power system constraints.

These generators can also participate in reserves markets, including upwards reserves by proactively curtailing some available power (based on its max_active_power time series). Example uses include: a utility-scale wind or solar generator whose PPA allows curtailment. For non-curtailable or must-take renewables, see RenewableNonDispatch.

Renewable generators do not have a max_active_power parameter, which is instead calculated when calling get_max_active_power()

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), used in some production cost modeling simulations. To set the reactive power in a load flow, use power_factor
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits, used in some production cost model simulations and in power flow if the unit is connected to a PV bus. Set to nothing if not applicable
  • power_factor::Float64: Power factor [0, 1] set-point, used in some production cost modeling and in load flow if the unit is connected to a PQ bus, validation range: (0, 1)
  • operation_cost::Union{RenewableGenerationCost, MarketBidCost}: OperationalCost of generation
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_RenewableNonDispatch/index.html b/previews/PR1200/model_library/generated_RenewableNonDispatch/index.html new file mode 100644 index 0000000000..7622b3182a --- /dev/null +++ b/previews/PR1200/model_library/generated_RenewableNonDispatch/index.html @@ -0,0 +1,45 @@ + +RenewableNonDispatch · PowerSystems.jl

RenewableNonDispatch

PowerSystems.RenewableNonDispatchType
mutable struct RenewableNonDispatch <: RenewableGen
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    prime_mover_type::PrimeMovers
+    power_factor::Float64
+    base_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A non-dispatchable (i.e., non-curtailable or must-take) renewable generator.

Its output is equal to its max_active_power time series by default. Example use: an aggregation of behind-the-meter distributed energy resources like rooftop solar. For curtailable or downward dispatachable generation, see RenewableDispatch.

Renewable generators do not have a max_active_power parameter, which is instead calculated when calling get_max_active_power()

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), used in some production cost modeling simulations. To set the reactive power in a load flow, use power_factor
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • power_factor::Float64: Power factor [0, 1] set-point, used in some production cost modeling and in load flow if the unit is connected to a PQ bus, validation range: (0, 1)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Shaft/index.html b/previews/PR1200/model_library/generated_Shaft/index.html new file mode 100644 index 0000000000..356d156e09 --- /dev/null +++ b/previews/PR1200/model_library/generated_Shaft/index.html @@ -0,0 +1,90 @@ + +Shaft · PowerSystems.jl

Shaft

FiveMassShaft

PowerSystems.FiveMassShaftType
mutable struct FiveMassShaft <: Shaft
+    H::Float64
+    H_hp::Float64
+    H_ip::Float64
+    H_lp::Float64
+    H_ex::Float64
+    D::Float64
+    D_hp::Float64
+    D_ip::Float64
+    D_lp::Float64
+    D_ex::Float64
+    D_12::Float64
+    D_23::Float64
+    D_34::Float64
+    D_45::Float64
+    K_hp::Float64
+    K_ip::Float64
+    K_lp::Float64
+    K_ex::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 5 mass-spring shaft model. It contains a High-Pressure (HP) steam turbine, Intermediate-Pressure (IP) steam turbine, Low-Pressure (LP) steam turbine, the Rotor and an Exciter (EX) mover

Arguments

  • H::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)
  • H_hp::Float64: High pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
  • H_ip::Float64: Intermediate pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
  • H_lp::Float64: Low pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
  • H_ex::Float64: Exciter inertia constant in MWs/MVA, validation range: (0, nothing)
  • D::Float64: Rotor natural damping in pu, validation range: (0, nothing)
  • D_hp::Float64: High pressure turbine natural damping in pu, validation range: (0, nothing)
  • D_ip::Float64: Intermediate pressure turbine natural damping in pu, validation range: (0, nothing)
  • D_lp::Float64: Low pressure turbine natural damping in pu, validation range: (0, nothing)
  • D_ex::Float64: Exciter natural damping in pu, validation range: (0, nothing)
  • D_12::Float64: High-Intermediate pressure turbine damping, validation range: (0, nothing)
  • D_23::Float64: Intermediate-Low pressure turbine damping, validation range: (0, nothing)
  • D_34::Float64: Low pressure turbine-Rotor damping, validation range: (0, nothing)
  • D_45::Float64: Rotor-Exciter damping, validation range: (0, nothing)
  • K_hp::Float64: High pressure turbine angle coefficient, validation range: (0, nothing)
  • K_ip::Float64: Intermediate pressure turbine angle coefficient, validation range: (0, nothing)
  • K_lp::Float64: Low pressure turbine angle coefficient, validation range: (0, nothing)
  • K_ex::Float64: Exciter angle coefficient, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
δ: rotor angle,
+ω: rotor speed,
+δ_hp: rotor angle of high pressure turbine,
+ω_hp: rotor speed of high pressure turbine,
+δ_ip: rotor angle of intermediate pressure turbine,
+ω_ip: rotor speed of intermediate pressure turbine,
+δ_lp: rotor angle of low pressure turbine,
+ω_lp: rotor speed of low pressure turbine,
+δ_ex: rotor angle of exciter,
+ω_lp: rotor speed of exciter
  • n_states::Int: (Do not modify.) FiveMassShaft has 10 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SingleMass

PowerSystems.SingleMassType
mutable struct SingleMass <: Shaft
+    H::Float64
+    D::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of single mass shaft model. Typically represents the rotor mass

Arguments

  • H::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)
  • D::Float64: Rotor natural damping in pu, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states are:
δ: rotor angle,
+ω: rotor speed
  • n_states::Int: (Do not modify.) SingleMass has 1 state
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_SimplifiedSingleCageInductionMachine/index.html b/previews/PR1200/model_library/generated_SimplifiedSingleCageInductionMachine/index.html new file mode 100644 index 0000000000..c11d8cf6a9 --- /dev/null +++ b/previews/PR1200/model_library/generated_SimplifiedSingleCageInductionMachine/index.html @@ -0,0 +1,146 @@ + +SimplifiedSingleCageInductionMachine · PowerSystems.jl

SimplifiedSingleCageInductionMachine

PowerSystems.SimplifiedSingleCageInductionMachineType
mutable struct SimplifiedSingleCageInductionMachine <: DynamicInjection
+    name::String
+    R_s::Float64
+    R_r::Float64
+    X_ls::Float64
+    X_lr::Float64
+    X_m::Float64
+    H::Float64
+    A::Float64
+    B::Float64
+    base_power::Float64
+    ext::Dict{String, Any}
+    C::Float64
+    τ_ref::Float64
+    B_shunt::Float64
+    X_ss::Float64
+    X_rr::Float64
+    X_p::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 3-states three-phase single cage induction machine with quadratic torque-speed relationship

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • R_s::Float64: Armature stator resistance, validation range: (0, nothing)
  • R_r::Float64: Rotor resistance, validation range: (0, nothing)
  • X_ls::Float64: Stator Leakage Reactance, validation range: (0, nothing)
  • X_lr::Float64: Rotor Leakage Reactance, validation range: (0, nothing)
  • X_m::Float64: Stator-Rotor Mutual Reactance, validation range: (0, nothing)
  • H::Float64: Motor Inertia Constant [s], validation range: (0, nothing)
  • A::Float64: Torque-Speed Quadratic Term, validation range: (0, 1)
  • B::Float64: Torque-Speed Linear Term, validation range: (0, 1)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • C::Float64: (Do not modify.) Torque-Speed Constant Term
  • τ_ref::Float64: Reference torque parameter
  • B_shunt::Float64: Susceptance Initialization Corrector Term
  • X_ss::Float64: (Do not modify.) Stator self reactance
  • X_rr::Float64: (Do not modify.) Rotor self reactance
  • X_p::Float64: (Do not modify.) Transient reactance
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψ_qr: rotor flux in the q-axis,
+ψ_dr: rotor flux in the d-axis, 
+ωr: Rotor speed [pu],
  • n_states::Int: (Do not modify.) SimplifiedSingleCageInductionMachine has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_SingleCageInductionMachine/index.html b/previews/PR1200/model_library/generated_SingleCageInductionMachine/index.html new file mode 100644 index 0000000000..9282ca9e09 --- /dev/null +++ b/previews/PR1200/model_library/generated_SingleCageInductionMachine/index.html @@ -0,0 +1,66 @@ + +SingleCageInductionMachine · PowerSystems.jl

SingleCageInductionMachine

PowerSystems.SingleCageInductionMachineType
mutable struct SingleCageInductionMachine <: DynamicInjection
+    name::String
+    R_s::Float64
+    R_r::Float64
+    X_ls::Float64
+    X_lr::Float64
+    X_m::Float64
+    H::Float64
+    A::Float64
+    B::Float64
+    base_power::Float64
+    ext::Dict{String, Any}
+    C::Float64
+    τ_ref::Float64
+    B_shunt::Float64
+    X_ad::Float64
+    X_aq::Float64
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of 5-states three-phase single cage induction machine with quadratic torque-speed relationship

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • R_s::Float64: Armature stator resistance, validation range: (0, nothing)
  • R_r::Float64: Rotor resistance, validation range: (0, nothing)
  • X_ls::Float64: Stator Leakage Reactance, validation range: (0, nothing)
  • X_lr::Float64: Rotor Leakage Reactance, validation range: (0, nothing)
  • X_m::Float64: Stator-Rotor Mutual Reactance, validation range: (0, nothing)
  • H::Float64: Motor Inertia Constant [s], validation range: (0, nothing)
  • A::Float64: Torque-Speed Quadratic Term, validation range: (0, 1)
  • B::Float64: Torque-Speed Linear Term, validation range: (0, 1)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • C::Float64: (Do not modify.) Torque-Speed Constant Term
  • τ_ref::Float64: Reference torque parameter
  • B_shunt::Float64: Susceptance Initialization Corrector Term
  • X_ad::Float64: (Do not modify.) Equivalent d-axis reactance
  • X_aq::Float64: (Do not modify.) Equivalent q-axis reactance
  • states::Vector{Symbol}: (Do not modify.) The states are:
ψ_qs: stator flux in the q-axis,
+ψ_ds: stator flux in the d-axis,
+ψ_qr: rotor flux in the q-axis,
+ψ_dr: rotor flux in the d-axis, 
+ωr: Rotor speed [pu],
  • n_states::Int: (Do not modify.) SingleCageInductionMachine has 5 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Source/index.html b/previews/PR1200/model_library/generated_Source/index.html new file mode 100644 index 0000000000..ef94e829aa --- /dev/null +++ b/previews/PR1200/model_library/generated_Source/index.html @@ -0,0 +1,43 @@ + +Source · PowerSystems.jl

Source

PowerSystems.SourceType
mutable struct Source <: StaticInjection
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    R_th::Float64
+    X_th::Float64
+    internal_voltage::Float64
+    internal_angle::Float64
+    base_power::Float64
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

An infinite bus with a constant voltage output.

Commonly used in dynamics simulations to represent a very large machine on a single bus

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR)
  • R_th::Float64: Source Thevenin resistance, validation range: (0, nothing)
  • X_th::Float64: Source Thevenin reactance, validation range: (0, nothing)
  • internal_voltage::Float64: (default: 1.0) Internal Voltage (pu), validation range: (0, nothing)
  • internal_angle::Float64: (default: 0.0) Internal Angle
  • base_power::Float64: (default: 100.0) Base Power in MVA
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_StandardLoad/index.html b/previews/PR1200/model_library/generated_StandardLoad/index.html new file mode 100644 index 0000000000..91cf2e731b --- /dev/null +++ b/previews/PR1200/model_library/generated_StandardLoad/index.html @@ -0,0 +1,85 @@ + +StandardLoad · PowerSystems.jl

StandardLoad

PowerSystems.StandardLoadType
mutable struct StandardLoad <: StaticLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    base_power::Float64
+    constant_active_power::Float64
+    constant_reactive_power::Float64
+    impedance_active_power::Float64
+    impedance_reactive_power::Float64
+    current_active_power::Float64
+    current_reactive_power::Float64
+    max_constant_active_power::Float64
+    max_constant_reactive_power::Float64
+    max_impedance_active_power::Float64
+    max_impedance_reactive_power::Float64
+    max_current_active_power::Float64
+    max_current_reactive_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A voltage-dependent ZIP load, most commonly used for dynamics modeling.

A StandardLoad breaks the ZIP into three pieces: Z (constant impedance), I (constant current), and P (constant power), according to P = P_P * V^0 + P_I * V^1 + P_Z * V^2 for active power and Q = Q_P * V^0 + Q_I * V^1 + Q_Z * V^2 for reactive power. (Voltage V is in per unit.)

For an alternative exponential formulation of the ZIP model, see ExponentialLoad. For a simpler load model with no voltage dependency, see PowerLoad

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • base_power::Float64: Base power of the load (MVA) for per unitization, validation range: (0, nothing)
  • constant_active_power::Float64: (default: 0.0) Constant active power demand in MW (P_P)
  • constant_reactive_power::Float64: (default: 0.0) Constant reactive power demand in MVAR (Q_P)
  • impedance_active_power::Float64: (default: 0.0) Active power coefficient in MW for constant impedance load (P_Z)
  • impedance_reactive_power::Float64: (default: 0.0) Reactive power coefficient in MVAR for constant impedance load (Q_Z)
  • current_active_power::Float64: (default: 0.0) Active power coefficient in MW for constant current load (P_I)
  • current_reactive_power::Float64: (default: 0.0) Reactive power coefficient in MVAR for constant current load (Q_I)
  • max_constant_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant power load
  • max_constant_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant power load
  • max_impedance_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant impedance load
  • max_impedance_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant impedance load
  • max_current_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant current load
  • max_current_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant current load
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_SwitchedAdmittance/index.html b/previews/PR1200/model_library/generated_SwitchedAdmittance/index.html new file mode 100644 index 0000000000..bfad09f113 --- /dev/null +++ b/previews/PR1200/model_library/generated_SwitchedAdmittance/index.html @@ -0,0 +1,31 @@ + +SwitchedAdmittance · PowerSystems.jl

SwitchedAdmittance

PowerSystems.SwitchedAdmittanceType
mutable struct SwitchedAdmittance <: ElectricLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    Y::Complex{Float64}
+    number_of_steps::Int
+    Y_increase::Complex{Float64}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A switched admittance, with discrete steps to adjust the admittance.

Most often used in power flow studies, iterating over the steps to see impacts of admittance on the results. Total admittance is calculated as: Y + number_of_steps * Y_increase

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • bus::ACBus: Bus that this component is connected to
  • Y::Complex{Float64}: Initial admittance at N = 0
  • number_of_steps::Int: (default: 0) Number of steps for adjustable shunt
  • Y_increase::Complex{Float64}: (default: 0) Admittance increment for each of step increase
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection model for admittance
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TModelHVDCLine/index.html b/previews/PR1200/model_library/generated_TModelHVDCLine/index.html new file mode 100644 index 0000000000..82eebdad54 --- /dev/null +++ b/previews/PR1200/model_library/generated_TModelHVDCLine/index.html @@ -0,0 +1,46 @@ + +TModelHVDCLine · PowerSystems.jl

TModelHVDCLine

PowerSystems.TModelHVDCLineType
mutable struct TModelHVDCLine <: DCBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    arc::Arc
+    r::Float64
+    l::Float64
+    c::Float64
+    active_power_limits_from::MinMax
+    active_power_limits_to::MinMax
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A High Voltage DC transmission line for modeling DC transmission networks.

This line must be connected to a DCBus on each end. It uses a T-Model of the line impedance. This is suitable for operational simulations with a multi-terminal DC network

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • arc::Arc: An Arc defining this line from a bus to another bus
  • r::Float64: Total series Resistance in p.u. (SYSTEM_BASE), split equally on both sides of the shunt capacitance
  • l::Float64: Total series Inductance in p.u. (SYSTEM_BASE), split equally on both sides of the shunt capacitance
  • c::Float64: Shunt capacitance in p.u. (SYSTEM_BASE)
  • active_power_limits_from::MinMax: Minimum and maximum active power flows to the FROM node (MW)
  • active_power_limits_to::MinMax: Minimum and maximum active power flows to the TO node (MW)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TapTransformer/index.html b/previews/PR1200/model_library/generated_TapTransformer/index.html new file mode 100644 index 0000000000..cf5f4ea1e3 --- /dev/null +++ b/previews/PR1200/model_library/generated_TapTransformer/index.html @@ -0,0 +1,39 @@ + +TapTransformer · PowerSystems.jl

TapTransformer

PowerSystems.TapTransformerType
mutable struct TapTransformer <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    reactive_power_flow::Float64
+    arc::Arc
+    r::Float64
+    x::Float64
+    primary_shunt::Float64
+    tap::Float64
+    rating::Union{Nothing, Float64}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A 2-winding transformer, with a tap changer for variable turns ratio.

The model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow through the transformer (MW)
  • reactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)
  • arc::Arc: An Arc defining this transformer from a bus to another bus
  • r::Float64: Resistance in p.u. (SYSTEM_BASE), validation range: (-2, 2)
  • x::Float64: Reactance in p.u. (SYSTEM_BASE), validation range: (-2, 4)
  • primary_shunt::Float64: Shunt reactance in p.u. (SYSTEM_BASE), validation range: (0, 2)
  • tap::Float64: Normalized tap changer position for voltage control, varying between 0 and 2, with 1 centered at the nominal voltage, validation range: (0, 2)
  • rating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ThermalMultiStart/index.html b/previews/PR1200/model_library/generated_ThermalMultiStart/index.html new file mode 100644 index 0000000000..e19509aeb9 --- /dev/null +++ b/previews/PR1200/model_library/generated_ThermalMultiStart/index.html @@ -0,0 +1,95 @@ + +ThermalMultiStart · PowerSystems.jl

ThermalMultiStart

PowerSystems.ThermalMultiStartType
mutable struct ThermalMultiStart <: ThermalGen
+    name::String
+    available::Bool
+    status::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    prime_mover_type::PrimeMovers
+    fuel::ThermalFuels
+    active_power_limits::MinMax
+    reactive_power_limits::Union{Nothing, MinMax}
+    ramp_limits::Union{Nothing, UpDown}
+    power_trajectory::Union{Nothing, StartUpShutDown}
+    time_limits::Union{Nothing, UpDown}
+    start_time_limits::Union{Nothing, StartUpStages}
+    start_types::Int
+    operation_cost::Union{ThermalGenerationCost, MarketBidCost}
+    base_power::Float64
+    services::Vector{Service}
+    time_at_status::Float64
+    must_run::Bool
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A thermal generator, such as a fossil fuel or nuclear generator, that can start-up again from a hot, warm, or cold state.

ThermalMultiStart has a detailed representation of the start-up process based on the time elapsed since the last shut down, as well as a detailed shut-down process. The model is based on "Tight and Compact MILP Formulation for the Thermal Unit Commitment Problem.". For a simplified representation of the start-up and shut-down processes, see ThermalStandard

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • status::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used, validation range: active_power_limits
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here
  • fuel::ThermalFuels: Prime mover fuel according to EIA 923. Options are listed here
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • ramp_limits::Union{Nothing, UpDown}:, validation range: (0, nothing)
  • power_trajectory::Union{Nothing, StartUpShutDown}: Power trajectory the unit will take during the start-up and shut-down ramp process, validation range: (0, nothing)
  • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)
  • start_time_limits::Union{Nothing, StartUpStages}: Time limits for start-up based on turbine temperature in hours
  • start_types::Int: Number of start-up based on turbine temperature, where 1 = hot, 2 = warm, and 3 = cold, validation range: (1, 3)
  • operation_cost::Union{ThermalGenerationCost, MarketBidCost}: OperationalCost of generation
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • time_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status
  • must_run::Bool: (default: false) Set to true if the unit is must run
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_ThermalStandard/index.html b/previews/PR1200/model_library/generated_ThermalStandard/index.html new file mode 100644 index 0000000000..20bcf3aec1 --- /dev/null +++ b/previews/PR1200/model_library/generated_ThermalStandard/index.html @@ -0,0 +1,77 @@ + +ThermalStandard · PowerSystems.jl

ThermalStandard

PowerSystems.ThermalStandardType
mutable struct ThermalStandard <: ThermalGen
+    name::String
+    available::Bool
+    status::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    rating::Float64
+    active_power_limits::MinMax
+    reactive_power_limits::Union{Nothing, MinMax}
+    ramp_limits::Union{Nothing, UpDown}
+    operation_cost::Union{ThermalGenerationCost, MarketBidCost}
+    base_power::Float64
+    time_limits::Union{Nothing, UpDown}
+    must_run::Bool
+    prime_mover_type::PrimeMovers
+    fuel::ThermalFuels
+    services::Vector{Service}
+    time_at_status::Float64
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A thermal generator, such as a fossil fuel and nuclear generator.

This is a standard representation with options to include a minimum up time, minimum down time, and ramp limits. For a more detailed representation the start-up and shut-down processes, including hot starts, see ThermalMultiStart

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • status::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used, validation range: active_power_limits
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits
  • rating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)
  • active_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable
  • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)
  • operation_cost::Union{ThermalGenerationCost, MarketBidCost}: OperationalCost of generation
  • base_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)
  • time_limits::Union{Nothing, UpDown}: (default: nothing) Minimum up and Minimum down time limits in hours, validation range: (0, nothing)
  • must_run::Bool: (default: false) Set to true if the unit is must run
  • prime_mover_type::PrimeMovers: (default: PrimeMovers.OT) Prime mover technology according to EIA 923. Options are listed here
  • fuel::ThermalFuels: (default: ThermalFuels.OTHER) Prime mover fuel according to EIA 923. Options are listed here
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • time_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status
  • dynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_Transformer2W/index.html b/previews/PR1200/model_library/generated_Transformer2W/index.html new file mode 100644 index 0000000000..f62ee8b154 --- /dev/null +++ b/previews/PR1200/model_library/generated_Transformer2W/index.html @@ -0,0 +1,36 @@ + +Transformer2W · PowerSystems.jl

Transformer2W

PowerSystems.Transformer2WType
mutable struct Transformer2W <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    reactive_power_flow::Float64
+    arc::Arc
+    r::Float64
+    x::Float64
+    primary_shunt::Float64
+    rating::Union{Nothing, Float64}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A basic 2-winding transformer.

The model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow through the transformer (MW)
  • reactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)
  • arc::Arc: An Arc defining this transformer from a bus to another bus
  • r::Float64: Resistance in pu (SYSTEM_BASE), validation range: (-2, 4)
  • x::Float64: Reactance in pu (SYSTEM_BASE), validation range: (-2, 4)
  • primary_shunt::Float64: Shunt reactance in pu (SYSTEM_BASE), validation range: (0, 2)
  • rating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TransmissionInterface/index.html b/previews/PR1200/model_library/generated_TransmissionInterface/index.html new file mode 100644 index 0000000000..5883961275 --- /dev/null +++ b/previews/PR1200/model_library/generated_TransmissionInterface/index.html @@ -0,0 +1,33 @@ + +TransmissionInterface · PowerSystems.jl

TransmissionInterface

PowerSystems.TransmissionInterfaceType
mutable struct TransmissionInterface <: Service
+    name::String
+    available::Bool
+    active_power_flow_limits::MinMax
+    violation_penalty::Float64
+    direction_mapping::Dict{String, Int}
+    internal::InfrastructureSystemsInternal
+end

A collection of branches that make up an interface or corridor for the transfer of power, such as between different Areas or LoadZones.

The interface can be used to constrain the power flow across it

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow_limits::MinMax: Minimum and maximum active power flow limits on the interface (MW)
  • violation_penalty::Float64: (default: INFINITE_COST) Penalty cost for violating the flow limits in the interface
  • direction_mapping::Dict{String, Int}: (default: Dict{String, Int}()) Dictionary of the line names in the interface and their direction of flow (1 or -1) relative to the flow of the interface
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TurbineGov/index.html b/previews/PR1200/model_library/generated_TurbineGov/index.html new file mode 100644 index 0000000000..8131960e5d --- /dev/null +++ b/previews/PR1200/model_library/generated_TurbineGov/index.html @@ -0,0 +1,700 @@ + +TurbineGov · PowerSystems.jl

TurbineGov

DEGOV

PowerSystems.DEGOVType
mutable struct DEGOV <: TurbineGov
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    K::Float64
+    T4::Float64
+    T5::Float64
+    T6::Float64
+    Td::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters Woodward Diesel Governor Model. DEGOV in PowerWorld

Arguments

  • T1::Float64: Governor mechanism time constant, validation range: (eps(), 100)
  • T2::Float64: Turbine power time constant, validation range: (eps(), 100)
  • T3::Float64: Turbine exhaust temperature time constant, validation range: (eps(), 100)
  • K::Float64: Governor gain (reciprocal of droop), validation range: (eps(), 100)
  • T4::Float64: Governor lead time constant, validation range: (eps(), 100)
  • T5::Float64: Governor lag time constant, validation range: (eps(), 100)
  • T6::Float64: Actuator time constant, validation range: (eps(), 100)
  • Td::Float64: Engine time delay, validation range: (eps(), 100)
  • P_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the DEGOV model are:
x_ecb1: Electric control box 1,
+x_ecb2: Electric control box 2,
+x_a1: Actuator 1,
+x_a2: Actuator 2,
+x_a3: Actuator 3,
  • n_states::Int: (Do not modify.) DEGOV has 5 states
  • states_types::Vector{StateTypes}: (Do not modify.) DEGOV has 5 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

DEGOV1

PowerSystems.DEGOV1Type
mutable struct DEGOV1 <: TurbineGov
+    droop_flag::Int
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    K::Float64
+    T4::Float64
+    T5::Float64
+    T6::Float64
+    Td::Float64
+    T_lim::Tuple{Float64, Float64}
+    R::Float64
+    Te::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters Woodward Diesel Governor Model. DEGOV1 in PSSE

Arguments

  • droop_flag::Int: Droop control Flag. 0 for throttle feedback and 1 for electric power feedback, validation range: (0, 1)
  • T1::Float64: Governor mechanism time constant in s, validation range: (0, 100)
  • T2::Float64: Turbine power time constant in s, validation range: (0, 100)
  • T3::Float64: Turbine exhaust temperature time constant in s, validation range: (0, 100)
  • K::Float64: Governor gain for actuator, validation range: (0, 100)
  • T4::Float64: Governor lead time constant in s, validation range: (0, 100)
  • T5::Float64: Governor lag time constant in s, validation range: (0, 100)
  • T6::Float64: Actuator time constant in s, validation range: (0, 100)
  • Td::Float64: Engine time delay in s, validation range: (0, 100)
  • T_lim::Tuple{Float64, Float64}: Operational control limits on actuator (Tmin, Tmax)
  • R::Float64: Steady state droop parameter, validation range: (0, 100)
  • Te::Float64: Power transducer time constant in s, validation range: (0, 100)
  • P_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the DEGOV1 model depends on the droop flag
  • n_states::Int: (Do not modify.) The number of states of the DEGOV1 model depends on the droop flag
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

GasTG

PowerSystems.GasTGType
mutable struct GasTG <: TurbineGov
+    R::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    AT::Float64
+    Kt::Float64
+    V_lim::Tuple{Float64, Float64}
+    D_turb::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Parameters of Gas Turbine-Governor. GAST in PSSE and GAST_PTI in PowerWorld

Arguments

  • R::Float64: Speed droop parameter, validation range: (eps(), 0.1)
  • T1::Float64: Governor time constant in s, validation range: (eps(), 0.5)
  • T2::Float64: Combustion chamber time constant, validation range: (eps(), 0.5)
  • T3::Float64: Load limit time constant (exhaust gas measurement time), validation range: (eps(), 5)
  • AT::Float64: Ambient temperature load limit, validation range: (0, 1)
  • Kt::Float64: Load limit feedback gain, validation range: (0, 5)
  • V_lim::Tuple{Float64, Float64}: Operational control limits on fuel valve opening (Vmin, Vmax)
  • D_turb::Float64: Speed damping coefficient of gas turbine rotor, validation range: (0, 0.5)
  • P_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the GAST model are:
x_g1: Fuel valve opening,
+x_g2: Fuel flow,
+x_g3: Exhaust temperature load
  • n_states::Int: (Do not modify.) GasTG has 3 states
  • states_types::Vector{StateTypes}: (Do not modify.) GAST has 3 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

GeneralGovModel

PowerSystems.GeneralGovModelType
mutable struct GeneralGovModel <: TurbineGov
+    Rselect::Int
+    fuel_flag::Int
+    R::Float64
+    Tpelec::Float64
+    speed_error_signal::MinMax
+    Kp_gov::Float64
+    Ki_gov::Float64
+    Kd_gov::Float64
+    Td_gov::Float64
+    valve_position_limits::MinMax
+    T_act::Float64
+    K_turb::Float64
+    Wf_nl::Float64
+    Tb::Float64
+    Tc::Float64
+    T_eng::Float64
+    Tf_load::Float64
+    Kp_load::Float64
+    Ki_load::Float64
+    Ld_ref::Float64
+    Dm::Float64
+    R_open::Float64
+    R_close::Float64
+    Ki_mw::Float64
+    A_set::Float64
+    Ka::Float64
+    Ta::Float64
+    T_rate::Float64
+    db::Float64
+    Tsa::Float64
+    Tsb::Float64
+    R_lim::UpDown
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

GE General Governor/Turbine Model. The GeneralGovModel (GGOV1) model is a general purpose governor model used for a variety of prime movers controlled by proportional-integral-derivative (PID) governors including gas turbines

Arguments

  • Rselect::Int: Feedback signal for governor droop, validation range: (-2, 1)
  • fuel_flag::Int: Flag Switch for fuel source characteristic, validation range: (0, 1)
  • R::Float64: Speed droop parameter, validation range: (eps(), nothing)
  • Tpelec::Float64: Electrical power transducer time constant, seconds, validation range: (eps(), nothing)
  • speed_error_signal::MinMax: Speed error signal limits
  • Kp_gov::Float64: Governor proportional gain, validation range: (0, nothing)
  • Ki_gov::Float64: Governor integral gain, validation range: (0, nothing)
  • Kd_gov::Float64: Governor derivative gain, validation range: (0, nothing)
  • Td_gov::Float64: Governor derivative time constant, validation range: (0, nothing)
  • valve_position_limits::MinMax: Valve position limits
  • T_act::Float64: Actuator time constant, validation range: (0, nothing)
  • K_turb::Float64: Turbine gain, validation range: (0, nothing)
  • Wf_nl::Float64: No load fuel flow, pu, validation range: (0, nothing)
  • Tb::Float64: Turbine lag time constant, sec, validation range: (0, nothing)
  • Tc::Float64: Turbine lead time constant, sec, validation range: (0, nothing)
  • T_eng::Float64: Transport lag time constant for diesel engine, sec, validation range: (0, nothing)
  • Tf_load::Float64: Load limiter time constant, validation range: (0, nothing)
  • Kp_load::Float64: Load limiter proportional gain for PI controller, validation range: (0, nothing)
  • Ki_load::Float64: Load integral gain for PI controller, validation range: (0, nothing)
  • Ld_ref::Float64: Load limiter integral gain for PI controller, validation range: (0, nothing)
  • Dm::Float64: Mechanical damping coefficient, pu, validation range: (0, nothing)
  • R_open::Float64: Maximum valve opening rate, pu/sec, validation range: (0, nothing)
  • R_close::Float64: Maximum valve closing rate, pu/sec, validation range: (0, nothing)
  • Ki_mw::Float64: Power controller (reset) gain, validation range: (0, nothing)
  • A_set::Float64: Acceleration limiter setpoint, pu/sec, validation range: (0, nothing)
  • Ka::Float64: Acceleration limiter gain, validation range: (0, nothing)
  • Ta::Float64: Acceleration limiter time constant , validation range: (eps(), nothing)
  • T_rate::Float64: Turbine rating, validation range: (0, nothing)
  • db::Float64: Speed governor deadband, validation range: (0, nothing)
  • Tsa::Float64: Temperature detection lead time constant, validation range: (0, nothing)
  • Tsb::Float64: Temperature detection lag time constant, validation range: (0, nothing)
  • R_lim::UpDown: Maximum rate of load increase
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the GGOV1 model are:
Pe: Machine Electrical Power Measurement,
+x_g1: Governor differential control,
+x_g2: Governor integral control, 
+x_g3: Turbine actuator, 
+x_g4: Turbine Lead-Lag, 
+x_g5: Turbine load limiter measurement, 
+x_g6: Turbine Load Limiter Integral Control, 
+x_g7: Supervisory Load Control, 
+x_g8: Acceleration Control, 
+x_g9 Temperature Detection Lead - Lag:
  • n_states::Int: (Do not modify.) GeneralGovModel has 10 states
  • states_types::Vector{StateTypes}: (Do not modify.) GGOV1 has 10 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

HydroTurbineGov

PowerSystems.HydroTurbineGovType
mutable struct HydroTurbineGov <: TurbineGov
+    R::Float64
+    r::Float64
+    Tr::Float64
+    Tf::Float64
+    Tg::Float64
+    VELM::Float64
+    gate_position_limits::MinMax
+    Tw::Float64
+    At::Float64
+    D_T::Float64
+    q_nl::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Hydro Turbine-Governor

Arguments

  • R::Float64: Permanent droop parameter, validation range: (0, 0.1)
  • r::Float64: Temporary Droop, validation range: (0, 2)
  • Tr::Float64: Governor time constant, validation range: (eps(), 30)
  • Tf::Float64: Filter Time constant, validation range: (eps(), 0.1)
  • Tg::Float64: Servo time constant, validation range: (eps(), 1)
  • VELM::Float64: gate velocity limit, validation range: (eps(), 0.3)
  • gate_position_limits::MinMax: Gate position limits
  • Tw::Float64: water time constant, validation range: (eps(), 3)
  • At::Float64: Turbine gain, validation range: (0.8, 1.5)
  • D_T::Float64: Turbine Damping, validation range: (0, 0.5)
  • q_nl::Float64: No-power flow, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the HydroTurbineGov model are:
x_g1: filter_output,
+x_g2: desired gate, 
+x_g3: gate opening, 
+x_g4: turbine flow
  • n_states::Int: (Do not modify.) HYGOV has 4 states
  • states_types::Vector{StateTypes}: (Do not modify.) HYGOV has 4 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

IEEETurbineGov1

PowerSystems.IEEETurbineGov1Type
mutable struct IEEETurbineGov1 <: TurbineGov
+    K::Float64
+    T1::Float64
+    T2::Float64
+    T3::Float64
+    U0::Float64
+    U_c::Float64
+    valve_position_limits::MinMax
+    T4::Float64
+    K1::Float64
+    K2::Float64
+    T5::Float64
+    K3::Float64
+    K4::Float64
+    T6::Float64
+    K5::Float64
+    K6::Float64
+    T7::Float64
+    K7::Float64
+    K8::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

IEEE Type 1 Speed-Governing Model

Arguments

  • K::Float64: Governor Gain, validation range: (5, 30)
  • T1::Float64: Input Filter Lag, validation range: (0, 5)
  • T2::Float64: Input Filter Lead, validation range: (0, 10)
  • T3::Float64: Valve position Time Constant, validation range: (eps(), 1)
  • U0::Float64: Maximum Valve Opening Rate, validation range: (0.01, 0.03)
  • U_c::Float64: Maximum Valve closing rate, validation range: (-0.3, 0)
  • valve_position_limits::MinMax: Valve position limits in MW
  • T4::Float64: Time Constant inlet steam, validation range: (0, 1)
  • K1::Float64: Fraction of high presure shaft power, validation range: (-2, 1)
  • K2::Float64: Fraction of low presure shaft power, validation range: (0, nothing)
  • T5::Float64: Time constant for second boiler pass, validation range: (0, 10)
  • K3::Float64: Fraction of high presure shaft power second boiler pass, validation range: (0, 0.5)
  • K4::Float64: Fraction of low presure shaft power second boiler pass, validation range: (0, 0.5)
  • T6::Float64: Time constant for third boiler pass, validation range: (0, 10)
  • K5::Float64: Fraction of high presure shaft power third boiler pass, validation range: (0, 0.35)
  • K6::Float64: Fraction of low presure shaft power third boiler pass, validation range: (0, 0.55)
  • T7::Float64: Time constant for fourth boiler pass, validation range: (0, 10)
  • K7::Float64: Fraction of high presure shaft power fourth boiler pass, validation range: (0, 0.3)
  • K8::Float64: Fraction of low presure shaft power fourth boiler pass, validation range: (0, 0.3)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the IEEETurbineGov model are:
x_g1: First Governor integrator,
+x_g2: Governor output,
+x_g3: First Turbine integrator, 
+x_g4: Second Turbine Integrator, 
+x_g5: Third Turbine Integrator, 
+x_g6: Fourth Turbine Integrator,
  • n_states::Int: (Do not modify.) IEEEG1 has 6 states
  • states_types::Vector{StateTypes}: (Do not modify.) IEEEG1 has 6 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

PIDGOV

PowerSystems.PIDGOVType
mutable struct PIDGOV <: TurbineGov
+    feedback_flag::Int
+    Rperm::Float64
+    T_reg::Float64
+    Kp::Float64
+    Ki::Float64
+    Kd::Float64
+    Ta::Float64
+    Tb::Float64
+    D_turb::Float64
+    gate_openings::Tuple{Float64, Float64, Float64}
+    power_gate_openings::Tuple{Float64, Float64, Float64}
+    G_lim::MinMax
+    A_tw::Float64
+    Tw::Float64
+    V_lim::MinMax
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Hydro Turbine-Governor with PID controller.

Arguments

  • feedback_flag::Int: Feedback signal for governor droop: 0 for electrical power, and 1 for gate position., validation range: (0, 1)
  • Rperm::Float64: Speed permanent droop parameter, validation range: (0, nothing)
  • T_reg::Float64: Speed detector time constant, validation range: (0, nothing)
  • Kp::Float64: Governor proportional gain, validation range: (0, nothing)
  • Ki::Float64: Governor integral gain, validation range: (0, nothing)
  • Kd::Float64: Governor derivative gain, validation range: (0, nothing)
  • Ta::Float64: Governor derivative time constant, validation range: (0, nothing)
  • Tb::Float64: Gate-servo time constant, validation range: (0, nothing)
  • D_turb::Float64: Turbine damping factor, validation range: (0, nothing)
  • gate_openings::Tuple{Float64, Float64, Float64}: Gate-opening speed at different loads
  • power_gate_openings::Tuple{Float64, Float64, Float64}: Power at gate_openings
  • G_lim::MinMax: Minimum/Maximum Gate openings (G_min, G_max).
  • A_tw::Float64: Factor multiplying Tw, validation range: (eps(), nothing)
  • Tw::Float64: Water inertia time constant, sec, validation range: (eps(), nothing)
  • V_lim::MinMax: Gate opening velocity limits (G_min, G_max).
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the PIDGOV model are:
x_g1: Filtered input measurement,
+x_g2: PI block internal state,
+x_g3: First regulator state, 
+x_g4: Derivative block internal state, 
+x_g5: Second regulator state, 
+x_g6: Gate position state, 
+x_g7: Water inertia state
  • n_states::Int: (Do not modify.) PIDGOV has 7 states
  • states_types::Vector{StateTypes}: (Do not modify.) PIDGOV has 7 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

SteamTurbineGov1

PowerSystems.SteamTurbineGov1Type
mutable struct SteamTurbineGov1 <: TurbineGov
+    R::Float64
+    T1::Float64
+    valve_position_limits::MinMax
+    T2::Float64
+    T3::Float64
+    D_T::Float64
+    DB_h::Float64
+    DB_l::Float64
+    T_rate::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Steam Turbine-Governor. This model considers both TGOV1 or TGOV1DU in PSS/E

Arguments

  • R::Float64: Droop parameter, validation range: (0, 0.1)
  • T1::Float64: Governor time constant, validation range: (eps(), 0.5)
  • valve_position_limits::MinMax: Valve position limits
  • T2::Float64: Lead Lag Lead Time constant , validation range: (0, nothing)
  • T3::Float64: Lead Lag Lag Time constant , validation range: (eps(), 10)
  • D_T::Float64: Turbine Damping, validation range: (0, 0.5)
  • DB_h::Float64: Deadband for overspeed, validation range: (0, nothing)
  • DB_l::Float64: Deadband for underspeed, validation range: (nothing, 0)
  • T_rate::Float64: Turbine Rate (MW). If zero, generator base is used, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the SteamTurbineGov1 model are:
x_g1: Valve Opening,
+x_g2: Lead-lag state
  • n_states::Int: (Do not modify.) TGOV1 has 2 states
  • states_types::Vector{StateTypes}: (Do not modify.) TGOV1 has 2 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

TGFixed

PowerSystems.TGFixedType
mutable struct TGFixed <: TurbineGov
+    efficiency::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a fixed Turbine Governor that returns a fixed mechanical torque given by the product of P_ref*efficiency

Arguments

  • efficiency::Float64: Efficiency factor that multiplies P_ref, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) TGFixed has no states
  • n_states::Int: (Do not modify.) TGFixed has no states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

TGSimple

PowerSystems.TGSimpleType
mutable struct TGSimple <: TurbineGov
+    d_t::Float64
+    Tm::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Simple one-state Turbine Governor

Arguments

  • d_t::Float64: Inverse Droop parameter, validation range: (0, nothing)
  • Tm::Float64: Turbine Governor Low-Pass Time Constant [s], validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the TGSimple model are:
τm: mechanical torque
  • n_states::Int: (Do not modify.) TGSimple has 1 state
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

TGTypeI

PowerSystems.TGTypeIType
mutable struct TGTypeI <: TurbineGov
+    R::Float64
+    Ts::Float64
+    Tc::Float64
+    T3::Float64
+    T4::Float64
+    T5::Float64
+    valve_position_limits::MinMax
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Turbine Governor Type I

Arguments

  • R::Float64: Droop parameter, validation range: (0, nothing)
  • Ts::Float64: Governor time constant, validation range: (0, nothing)
  • Tc::Float64: Servo time constant, validation range: (0, nothing)
  • T3::Float64: Transient gain time constant, validation range: (0, nothing)
  • T4::Float64: Power fraction time constant, validation range: (0, nothing)
  • T5::Float64: Reheat time constant, validation range: (0, nothing)
  • valve_position_limits::MinMax: Valve position limits in MW
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the TGTypeI model are:
x_g1: Governor state,
+x_g2: Servo state,
+x_g3: Reheat state
  • n_states::Int: (Do not modify.) TGTypeI has 3 states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

TGTypeII

PowerSystems.TGTypeIIType
mutable struct TGTypeII <: TurbineGov
+    R::Float64
+    T1::Float64
+    T2::Float64
+    τ_limits::MinMax
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

Parameters of a Turbine Governor Type II

Arguments

  • R::Float64: Droop parameter, validation range: (0, nothing)
  • T1::Float64: Transient gain time constant, validation range: (0, nothing)
  • T2::Float64: Power fraction time constant, validation range: (0, nothing)
  • τ_limits::MinMax: Power into the governor limits
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the TGTypeI model are:
x_g1: lead-lag state
  • n_states::Int: (Do not modify.) TGTypeII has 1 state
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

WPIDHY

PowerSystems.WPIDHYType
mutable struct WPIDHY <: TurbineGov
+    T_reg::Float64
+    reg::Float64
+    Kp::Float64
+    Ki::Float64
+    Kd::Float64
+    Ta::Float64
+    Tb::Float64
+    V_lim::MinMax
+    G_lim::MinMax
+    Tw::Float64
+    P_lim::MinMax
+    D::Float64
+    gate_openings::Tuple{Float64, Float64, Float64}
+    power_gate_openings::Tuple{Float64, Float64, Float64}
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    states_types::Vector{StateTypes}
+    internal::InfrastructureSystemsInternal
+end

Woodward PID Hydro Governor

Arguments

  • T_reg::Float64: Input time constant of the governor in s, validation range: (0, nothing)
  • reg::Float64: Input governor gain, validation range: (0, nothing)
  • Kp::Float64: Governor proportional gain, validation range: (0, nothing)
  • Ki::Float64: Governor integral gain, validation range: (0, nothing)
  • Kd::Float64: Governor derivative gain, validation range: (0, nothing)
  • Ta::Float64: Governor derivative/high-frequency time constant, validation range: (0, nothing)
  • Tb::Float64: Gate-servo time constant, validation range: (0, nothing)
  • V_lim::MinMax: Gate opening velocity limits (G_min, G_max).
  • G_lim::MinMax: Minimum/Maximum Gate velocity (G_min, G_max).
  • Tw::Float64: Water inertia time constant, sec, validation range: (eps(), nothing)
  • P_lim::MinMax: Minimum/Maximum Gate openings (P_min, P_max).
  • D::Float64: Turbine damping coefficient, validation range: (0, nothing)
  • gate_openings::Tuple{Float64, Float64, Float64}: Gate-opening speed at different loads
  • power_gate_openings::Tuple{Float64, Float64, Float64}: Power at gate_openings
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the PIDGOV model are:
x_g1: Filtered input measurement,
+x_g2: PI block internal state,
+x_g3: First regulator state, 
+x_g4: Derivative block internal state, 
+x_g5: Second regulator state, 
+x_g6: Gate position state, 
+x_g7: Water inertia state
  • n_states::Int: (Do not modify.) PIDGOV has 7 states
  • states_types::Vector{StateTypes}: (Do not modify.) PIDGOV has 7 differential states
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TwoTerminalHVDCLine/index.html b/previews/PR1200/model_library/generated_TwoTerminalHVDCLine/index.html new file mode 100644 index 0000000000..16570740ef --- /dev/null +++ b/previews/PR1200/model_library/generated_TwoTerminalHVDCLine/index.html @@ -0,0 +1,61 @@ + +TwoTerminalHVDCLine · PowerSystems.jl

TwoTerminalHVDCLine

PowerSystems.TwoTerminalHVDCLineType
mutable struct TwoTerminalHVDCLine <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    arc::Arc
+    active_power_limits_from::MinMax
+    active_power_limits_to::MinMax
+    reactive_power_limits_from::MinMax
+    reactive_power_limits_to::MinMax
+    loss::Union{LinearCurve, PiecewiseIncrementalCurve}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A High Voltage DC line, which must be connected to an ACBus on each end.

This model is appropriate for operational simulations with a linearized DC power flow approximation with losses proportional to the power flow. For modeling a DC network, see TModelHVDCLine

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • arc::Arc: An Arc defining this line from a bus to another bus
  • active_power_limits_from::MinMax: Minimum and maximum active power flows to the FROM node (MW)
  • active_power_limits_to::MinMax: Minimum and maximum active power flows to the TO node (MW)
  • reactive_power_limits_from::MinMax: Minimum and maximum reactive power limits to the FROM node (MVAR)
  • reactive_power_limits_to::MinMax: Minimum and maximum reactive power limits to the TO node (MVAR)
  • loss::Union{LinearCurve, PiecewiseIncrementalCurve}: (default: LinearCurve(0.0)) Loss model coefficients. It accepts a linear model with a constant loss (MW) and a proportional loss rate (MW of loss per MW of flow). It also accepts a Piecewise loss, with N segments to specify different proportional losses for different segments.
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_TwoTerminalVSCDCLine/index.html b/previews/PR1200/model_library/generated_TwoTerminalVSCDCLine/index.html new file mode 100644 index 0000000000..48acd6a1d2 --- /dev/null +++ b/previews/PR1200/model_library/generated_TwoTerminalVSCDCLine/index.html @@ -0,0 +1,62 @@ + +TwoTerminalVSCDCLine · PowerSystems.jl

TwoTerminalVSCDCLine

PowerSystems.TwoTerminalVSCDCLineType
mutable struct TwoTerminalVSCDCLine <: ACBranch
+    name::String
+    available::Bool
+    active_power_flow::Float64
+    arc::Arc
+    rectifier_tap_limits::MinMax
+    rectifier_xrc::Float64
+    rectifier_firing_angle::MinMax
+    inverter_tap_limits::MinMax
+    inverter_xrc::Float64
+    inverter_extinction_angle::MinMax
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A Voltage Sourced Converter (VSC)-HVDC transmission line.

As implemented in "Power System Modelling and Scripting" by Federico Milano, Chapter 18, Page 397. This model is suitable for dynamic simulations

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • active_power_flow::Float64: Initial condition of active power flow on the line (MW)
  • arc::Arc: An Arc defining this line from a bus to another bus
  • rectifier_tap_limits::MinMax: Minimum and maximum rectifier tap limits as a ratio between the primary and secondary side voltages
  • rectifier_xrc::Float64: Rectifier commutation reactance in p.u. (DEVICE_BASE)
  • rectifier_firing_angle::MinMax: Minimum and maximum rectifier firing angle (α) (radians)
  • inverter_tap_limits::MinMax: Minimum and maximum inverter tap limits as a ratio between the primary and secondary side voltages
  • inverter_xrc::Float64: Inverter commutation reactance in p.u. (DEVICE_BASE)
  • inverter_extinction_angle::MinMax: Minimum and maximum inverter extinction angle (γ) (radians)
  • services::Vector{Service}: (default: Device[]) Services that this device contributes to
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/generated_VariableReserveNonSpinning/index.html b/previews/PR1200/model_library/generated_VariableReserveNonSpinning/index.html new file mode 100644 index 0000000000..8879c2ecbb --- /dev/null +++ b/previews/PR1200/model_library/generated_VariableReserveNonSpinning/index.html @@ -0,0 +1,61 @@ + +VariableReserveNonSpinning · PowerSystems.jl

VariableReserveNonSpinning

PowerSystems.VariableReserveNonSpinningType
mutable struct VariableReserveNonSpinning <: ReserveNonSpinning
+    name::String
+    available::Bool
+    time_frame::Float64
+    requirement::Float64
+    sustained_time::Float64
+    max_output_fraction::Float64
+    max_participation_factor::Float64
+    deployed_fraction::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A non-spinning reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.

This reserve product includes back-up generators that might not be currently synchronized with the power system, but can come online quickly after an unexpected contingency, such as a transmission line or generator outage. To model the time varying requirement, a "requirement" time series should be added to this reserve.

This is only an upwards reserve. For faster-responding upwards or downwards reserves from components already synchronized with the system, see VariableReserve

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData
  • sustained_time::Float64: (default: 14400.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/hybrid_system/index.html b/previews/PR1200/model_library/hybrid_system/index.html new file mode 100644 index 0000000000..af0d71f6c2 --- /dev/null +++ b/previews/PR1200/model_library/hybrid_system/index.html @@ -0,0 +1,85 @@ + +HybridSystem · PowerSystems.jl

Hybrid System

PowerSystems.HybridSystemType
mutable struct HybridSystem <: StaticInjectionSubsystem
+    name::String
+    available::Bool
+    status::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    base_power::Float64
+    operation_cost::MarketBidCost
+    thermal_unit::Union{Nothing, ThermalGen}
+    electric_load::Union{Nothing, ElectricLoad}
+    storage::Union{Nothing, Storage}
+    renewable_unit::Union{Nothing, RenewableGen}
+    interconnection_impedance::ComplexF64
+    interconnection_rating::Union{Nothing, Float64}
+    input_active_power_limits::Union{Nothing, MinMax}
+    output_active_power_limits::Union{Nothing, MinMax}
+    reactive_power_limits::Union{Nothing, MinMax}
+    interconnection_efficiency::Union{
+        Nothing,
+        NamedTuple{(:in, :out), Tuple{Float64, Float64}},
+    }
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A Hybrid System that includes a combination of renewable generation, load, thermal generation and/or energy storage.

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • status::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)
  • bus::ACBus: Bus that this component is connected to
  • active_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used
  • reactive_power::Float64: Initial reactive power set point of the unit (MVAR)
  • base_power::Float64: Base power of the unit (MVA) for per unitization, which is commonly the same as rating
  • operation_cost::MarketBidCost: Market bid cost to operate, MarketBidCost
  • thermal_unit::Union{Nothing, ThermalGen}: A thermal generator with supertype ThermalGen
  • electric_load::Union{Nothing, ElectricLoad}: A load with supertype ElectricLoad
  • storage::Union{Nothing, Storage}: An energy storage system with supertype Storage
  • renewable_unit::Union{Nothing, RenewableGen}: A renewable generator with supertype RenewableGen
  • interconnection_impedance::ComplexF64: Impedance (typically in p.u.) between the hybrid system and the grid interconnection
  • interconnection_rating::Union{Nothing, Float64}: Maximum rating of the hybrid system's interconnection with the transmission network (MVA)
  • input_active_power_limits::MinMax: Minimum and maximum stable input active power levels (MW)
  • output_active_power_limits::MinMax: Minimum and maximum stable output active power levels (MW)
  • reactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits (MVAR). Set to Nothing if not applicable.
  • interconnection_efficiency::Union{Nothing, NamedTuple{(:in, :out), Tuple{Float64, Float64}},}: Efficiency [0, 1.0] at the grid interconnection to model losses in and out of the common DC-side conversion
  • services::Vector{Service}: (optional) Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: (optional) corresponding dynamic injection device
  • ext::Dict{String, Any}: (optional) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference.
source
PowerSystems.get_subcomponentsMethod
get_subcomponents(hybrid::HybridSystem) -> Channel{Any}
+

Return an iterator over the subcomponents in the HybridSystem.

Examples

for subcomponent in get_subcomponents(hybrid_sys)
+    @show subcomponent
+end
+subcomponents = collect(get_subcomponents(hybrid_sys))
source
diff --git a/previews/PR1200/model_library/hydro_generation_cost/index.html b/previews/PR1200/model_library/hydro_generation_cost/index.html new file mode 100644 index 0000000000..3d3a043172 --- /dev/null +++ b/previews/PR1200/model_library/hydro_generation_cost/index.html @@ -0,0 +1,9 @@ + +HydroGenerationCost · PowerSystems.jl

HydroGenerationCost

PowerSystems.HydroGenerationCostType
mutable struct HydroGenerationCost <: OperationalCost
  • variable::ProductionVariableCostCurve: Production variable cost represented by a FuelCurve, where the fuel is water, or a CostCurve in currency.

  • fixed::Float64: (default: 0) Fixed cost of keeping the unit online. For some cost represenations this field can be duplicative

HydroGenerationCost(variable, fixed)
+HydroGenerationCost(; variable, fixed)

An operational cost of a hydropower generator which includes fixed and variable cost. Variable costs can be used to represent the cost of curtailment if negative values are used or the opportunity cost of water if the costs are positive. It also supports fuel curves to model specific water intake.

The variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.

source
diff --git a/previews/PR1200/model_library/load_cost/index.html b/previews/PR1200/model_library/load_cost/index.html new file mode 100644 index 0000000000..63f53c0db6 --- /dev/null +++ b/previews/PR1200/model_library/load_cost/index.html @@ -0,0 +1,7 @@ + +LoadCost · PowerSystems.jl

LoadCost

PowerSystems.LoadCostType
mutable struct LoadCost <: OperationalCost
  • variable::CostCurve: Variable cost represented as a CostCurve

  • fixed::Float64: (default: 0) Fixed cost. For some cost represenations this field can be duplicative

LoadCost(variable, fixed)
+LoadCost(; variable, fixed)

An operational cost for controllable loads (e.g., InterruptiblePowerLoad), including fixed and variable cost components.

The variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.

source
diff --git a/previews/PR1200/model_library/market_bid_cost/index.html b/previews/PR1200/model_library/market_bid_cost/index.html new file mode 100644 index 0000000000..9a43db2a11 --- /dev/null +++ b/previews/PR1200/model_library/market_bid_cost/index.html @@ -0,0 +1,99 @@ + +MarketBidCost · PowerSystems.jl

MarketBidCost

PowerSystems.MarketBidCostType
mutable struct MarketBidCost <: OperationalCost
  • no_load_cost::Union{Nothing, Float64, TimeSeriesKey}: No load cost

  • start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}: Start-up cost at different stages of the thermal cycle as the unit cools after a shutdown (e.g., hot, warm, or cold starts). Warm is also referred to as intermediate in some markets. Can also accept a single value if there is only one start-up cost

  • shut_down::Float64: Shut-down cost

  • incremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Sell Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve

  • decremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Buy Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve

  • incremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for incrementaloffercurves, this is a time series of Float64 representing the initial_input

  • decremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for decrementaloffercurves, this is a time series of Float64 representing the initial_input

  • ancillary_service_offers::Vector{Service}: Bids for the ancillary services

MarketBidCost(no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)
+MarketBidCost(; no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)
+MarketBidCost(no_load_cost, start_up::Real, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)

An operating cost for market bids of energy and ancilliary services for any asset. Compatible with most US Market bidding mechanisms that support demand and generation side.

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
+    no_load_cost,
+    start_up::Real,
+    shut_down;
+    incremental_offer_curves,
+    decremental_offer_curves,
+    incremental_initial_input,
+    decremental_initial_input,
+    ancillary_service_offers
+) -> MarketBidCost
+

Accepts a single start_up value to use as the hot value, with warm and cold set to 0.0.

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
+    no_load_cost::Float64,
+    start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},
+    shut_down,
+    incremental_offer_curves,
+    decremental_offer_curves,
+    ancillary_service_offers
+) -> MarketBidCost
+

Auxiliary Constructor for TestData

source
PowerSystems.MarketBidCostMethod
MarketBidCost(
+    no_load_cost::Integer,
+    start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},
+    shut_down,
+    incremental_offer_curves,
+    decremental_offer_curves,
+    incremental_initial_input,
+    decremental_initial_input,
+    ancillary_service_offers
+) -> MarketBidCost
+

Auxiliary Constructor for Deserialization with Integer at no load cost

source
PowerSystems.make_market_bid_curveMethod
make_market_bid_curve(
+    data::PiecewiseStepData,
+    initial_input::Float64;
+    power_units,
+    input_at_zero
+) -> CostCurve{PiecewiseIncrementalCurve}
+

Make a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from the FunctionData that might be used to store such a cost curve in a time series.

source
PowerSystems.make_market_bid_curveMethod
make_market_bid_curve(
+    powers::Vector{Float64},
+    marginal_costs::Vector{Float64},
+    initial_input::Float64;
+    power_units,
+    input_at_zero
+) -> CostCurve{PiecewiseIncrementalCurve}
+

Make a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from a vector of power values, a vector of marginal costs, a float of initial input, and an optional units system and input at zero.

Examples

mbc = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0)
+mbc2 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; input_at_zero = 10.0)
+mbc3 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; power_inputs = UnitSystem.NATURAL_UNITS)
source
PowerSystems.set_start_up!Method
set_start_up!(
+    value::MarketBidCost,
+    val::Real
+) -> NamedTuple{(:hot, :warm, :cold), <:Tuple{Any, Float64, Float64}}
+

Auxiliary Method for setting up start up that are not multi-start

source
diff --git a/previews/PR1200/model_library/outer_control/index.html b/previews/PR1200/model_library/outer_control/index.html new file mode 100644 index 0000000000..277ec0a649 --- /dev/null +++ b/previews/PR1200/model_library/outer_control/index.html @@ -0,0 +1,401 @@ + +OuterControl · PowerSystems.jl

OuterControl

The outer control is composed by the ReactivePowerControl and the ActivePowerControl types.

PowerSystems.OuterControlType
mutable struct OuterControl{
+    A <: ActivePowerControl,
+    R <: ReactivePowerControl
+} <: DynamicInverterComponent
+    active_power_control::A
+    reactive_power_control::R
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Outer-Loop controller using a active power controller and a reactive power droop controller.

Arguments

  • A <: ActivePowerControl: Active power controller (typically droop or virtual inertia).
  • R <: ReactivePowerControl: Reactive power controller (typically droop).
  • ext::Dict{String, Any}
  • states::Vector{Symbol}: Vector of states (will depend on the components).
  • n_states::Int: Number of states (will depend on the components).
source

Active Power Controllers

Virtual Inertia

PowerSystems.VirtualInertiaType
mutable struct VirtualInertia <: ActivePowerControl
+    Ta::Float64
+    kd::Float64
+    kω::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Virtual Inertia with SRF using VSM for active power controller

Arguments

  • Ta::Float64: VSM inertia constant, validation range: (0, nothing)
  • kd::Float64: VSM damping constant, validation range: (0, nothing)
  • kω::Float64: frequency droop gain, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the VirtualInertia model are:
θ_oc: Phase angle displacement of the virtual synchronous generator model
+ω_oc: Speed of the rotating reference frame of the virtual synchronous generator model
  • n_states::Int: (Do not modify.) VirtualInertia has two states
source

Active Power Droop

PowerSystems.ActivePowerDroopType
mutable struct ActivePowerDroop <: ActivePowerControl
+    Rp::Float64
+    ωz::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of an Active Power droop controller

Arguments

  • Rp::Float64: Droop Gain, validation range: (0, nothing)
  • ωz::Float64: filter frequency cutoff, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ActivePowerDroop model are:
θ_oc: Phase angle displacement of the inverter model,
+p_oc: Measured active power of the inverter model
  • n_states::Int: (Do not modify.) ActivePowerDroop has two states
source

Active Power PI

PowerSystems.ActivePowerPIType
mutable struct ActivePowerPI <: ActivePowerControl
+    Kp_p::Float64
+    Ki_p::Float64
+    ωz::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Proportional-Integral Active Power controller for a specified power reference

Arguments

  • Kp_p::Float64: Proportional Gain, validation range: (0, nothing)
  • Ki_p::Float64: Integral Gain, validation range: (0, nothing)
  • ωz::Float64: filter frequency cutoff, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ActivePowerPI model are:
σp_oc: Integrator state of the PI Controller,
+p_oc: Measured active power of the inverter model
  • n_states::Int: (Do not modify.) ActivePowerPI has two states
source

Active Virtual Oscillator

PowerSystems.ActiveVirtualOscillatorType
mutable struct ActiveVirtualOscillator <: ActivePowerControl
+    k1::Float64
+    ψ::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of an Active Virtual Oscillator controller. Model is based on "Model Reduction for Inverters with Current Limiting and Dispatchable Virtual Oscillator Control."

Arguments

  • k1::Float64: VOC Synchronization Gain, validation range: (0, nothing)
  • ψ::Float64: Rotation angle of the controller, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ActiveVirtualOscillator model are:
θ_oc: Phase angle displacement of the inverter model
  • n_states::Int: (Do not modify.) ActiveVirtualOscillator has one state
source

Active Renewable Controller Type AB

PowerSystems.ActiveRenewableControllerABType
mutable struct ActiveRenewableControllerAB <: ActivePowerControl
+    bus_control::Int
+    from_branch_control::Int
+    to_branch_control::Int
+    branch_id_control::String
+    Freq_Flag::Int
+    K_pg::Float64
+    K_ig::Float64
+    T_p::Float64
+    fdbd_pnts::Tuple{Float64, Float64}
+    fe_lim::MinMax
+    P_lim::MinMax
+    T_g::Float64
+    D_dn::Float64
+    D_up::Float64
+    dP_lim::MinMax
+    P_lim_inner::MinMax
+    T_pord::Float64
+    P_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of Active Power Controller including REPCA1 and REECB1

Arguments

  • bus_control::Int: ACBus identification number for voltage control. 0 identifies the local bus connected to this component, validation range: (0, nothing)
  • from_branch_control::Int: Monitored branch FROM bus number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)
  • to_branch_control::Int: Monitored branch TO bus number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)
  • branch_id_control::String: Branch circuit id for line drop compensation (as a string). If 0 generator power will be used
  • Freq_Flag::Int: Frequency Flag for REPCA1: 0: disable, 1:enable, validation range: (0, 1)
  • K_pg::Float64: Active power PI control proportional gain, validation range: (0, nothing)
  • K_ig::Float64: Active power PI control integral gain, validation range: (0, nothing)
  • T_p::Float64: Real power measurement filter time constant (s), validation range: (0, nothing)
  • fdbd_pnts::Tuple{Float64, Float64}: Frequency error dead band thresholds (fdbd1, fdbd2)
  • fe_lim::MinMax: Upper/Lower limit on frequency error (fe_min, fe_max)
  • P_lim::MinMax: Upper/Lower limit on power reference (P_min, P_max)
  • T_g::Float64: Power Controller lag time constant, validation range: (0, nothing)
  • D_dn::Float64: Droop for over-frequency conditions, validation range: (nothing, 0)
  • D_up::Float64: Droop for under-frequency conditions, validation range: (0, nothing)
  • dP_lim::MinMax: Upper/Lower limit on power reference ramp rates(dP_min, dP_max)
  • P_lim_inner::MinMax: Upper/Lower limit on power reference for REECB(P_min_inner, P_max_inner)
  • T_pord::Float64: Power filter time constant REECB time constant, validation range: (0, nothing)
  • P_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ActiveRenewableControllerAB model depends on the Flag
  • n_states::Int: (Do not modify.) The states of the ActiveRenewableControllerAB model depends on the Flag
source

Reactive Power Controllers

Reactive Power Droop

PowerSystems.ReactivePowerDroopType
mutable struct ReactivePowerDroop <: ReactivePowerControl
+    kq::Float64
+    ωf::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Reactive Power droop controller

Arguments

  • kq::Float64: frequency droop gain, validation range: (0, nothing)
  • ωf::Float64: filter frequency cutoff, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ReactivePowerDroop model are:
q_oc: Filtered reactive output power
  • n_states::Int: (Do not modify.) ReactivePowerDroop has 1 state
source

Reactive Power PI

PowerSystems.ReactivePowerPIType
mutable struct ReactivePowerPI <: ReactivePowerControl
+    Kp_q::Float64
+    Ki_q::Float64
+    ωf::Float64
+    V_ref::Float64
+    Q_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Proportional-Integral Reactive Power controller for a specified power reference

Arguments

  • Kp_q::Float64: Proportional Gain, validation range: (0, nothing)
  • Ki_q::Float64: Integral Gain, validation range: (0, nothing)
  • ωf::Float64: filter frequency cutoff, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Voltage Set-point (pu), validation range: (0, nothing)
  • Q_ref::Float64: (default: 1.0) Reactive Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ReactivePowerPI model are:
σq_oc: Integrator state of the PI Controller,
+q_oc: Measured reactive power of the inverter model
  • n_states::Int: (Do not modify.) ReactivePowerPI has two states
source

Reactive Virtual Oscillator

PowerSystems.ReactiveVirtualOscillatorType
mutable struct ReactiveVirtualOscillator <: ReactivePowerControl
+    k2::Float64
+    V_ref::Float64
+    Q_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of a Reactive Virtual Oscillator controller. Model is based on "Model Reduction for Inverters with Current Limiting and Dispatchable Virtual Oscillator Control."

Arguments

  • k2::Float64: VOC voltage-amplitude control gain, validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • Q_ref::Float64: (default: 1.0) Reference Reactive Power Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ReactiveVirtualOscilator model are:
E_oc: voltage reference state for inner control in the d-axis
  • n_states::Int: (Do not modify.) ReactiveVirtualOscillator has 1 state
source

Reactive Renewable Controller Type AB

PowerSystems.ReactiveRenewableControllerABType
mutable struct ReactiveRenewableControllerAB <: ReactivePowerControl
+    bus_control::Int
+    from_branch_control::Int
+    to_branch_control::Int
+    branch_id_control::String
+    VC_Flag::Int
+    Ref_Flag::Int
+    PF_Flag::Int
+    V_Flag::Int
+    T_fltr::Float64
+    K_p::Float64
+    K_i::Float64
+    T_ft::Float64
+    T_fv::Float64
+    V_frz::Float64
+    R_c::Float64
+    X_c::Float64
+    K_c::Float64
+    e_lim::MinMax
+    dbd_pnts::Tuple{Float64, Float64}
+    Q_lim::MinMax
+    T_p::Float64
+    Q_lim_inner::MinMax
+    V_lim::MinMax
+    K_qp::Float64
+    K_qi::Float64
+    Q_ref::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+end

Parameters of Reactive Power Controller including REPCA1 and REECB1

Arguments

  • bus_control::Int: ACBus identification number for voltage control. 0 identifies the local bus connected to this component, validation range: (0, nothing)
  • from_branch_control::Int: Monitored branch FROM bus identification number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)
  • to_branch_control::Int: Monitored branch TO bus identification number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)
  • branch_id_control::String: Branch circuit id for line drop compensation (as a string). If 0 generator power will be used
  • VC_Flag::Int: Voltage Compensator Flag for REPCA1, validation range: (0, 1)
  • Ref_Flag::Int: Flag for Reactive Power Control for REPCA1. 0: Q-control, 1: V-control, validation range: (0, 1)
  • PF_Flag::Int: Flag for Power Factor Control for Outer Control of REECB1. 0: Q-control, 1: Power Factor Control, validation range: (0, 1)
  • V_Flag::Int: Flag for Voltage Control for Outer Control of REECB1. 0: Voltage Control, 1: Q-Control, validation range: (0, 1)
  • T_fltr::Float64: Voltage or Q-power of REPCA Filter Time Constant, validation range: (0, nothing)
  • K_p::Float64: Reactive power PI control proportional gain, validation range: (0, nothing)
  • K_i::Float64: Reactive power PI control integral gain, validation range: (0, nothing)
  • T_ft::Float64: Reactive power lead time constant (s), validation range: (0, nothing)
  • T_fv::Float64: Reactive power lag time constant (s), validation range: (0, nothing)
  • V_frz::Float64: Voltage below which state ξq_oc (integrator state) is freeze, validation range: (0, nothing)
  • R_c::Float64: Line drop compensation resistance (used when VC_Flag = 1), validation range: (0, nothing)
  • X_c::Float64: Line drop compensation reactance (used when VC_Flag = 1), validation range: (0, nothing)
  • K_c::Float64: Reactive current compensation gain (pu) (used when VC_Flag = 0), validation range: (0, nothing)
  • e_lim::MinMax: Upper/Lower limit on Voltage or Q-power deadband output (e_min, e_max)
  • dbd_pnts::Tuple{Float64, Float64}: Voltage or Q-power error dead band thresholds (dbd1, dbd2)
  • Q_lim::MinMax: Upper/Lower limit on reactive power V/Q control in REPCA (Q_min, Q_max)
  • T_p::Float64: Active power lag time constant in REECB (s). Used only when PF_Flag = 1, validation range: (0, nothing)
  • Q_lim_inner::MinMax: Upper/Lower limit on reactive power input in REECB (Q_min_inner, Q_max_inner). Only used when V_Flag = 1
  • V_lim::MinMax: Upper/Lower limit on reactive power PI controller in REECB (V_min, V_max). Only used when V_Flag = 1
  • K_qp::Float64: Reactive power regulator proportional gain (used when V_Flag = 1), validation range: (0, nothing)
  • K_qi::Float64: Reactive power regulator integral gain (used when V_Flag = 1), validation range: (0, nothing)
  • Q_ref::Float64: (default: 1.0) Reference Reactive Power Set-point (pu), validation range: (0, nothing)
  • V_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • states::Vector{Symbol}: (Do not modify.) The states of the ReactiveRenewableControllerAB model depends on the Flag
  • n_states::Int: (Do not modify.) The states of the ReactiveRenewableControllerAB model depends on the Flag
source
diff --git a/previews/PR1200/model_library/renewable_generation_cost/index.html b/previews/PR1200/model_library/renewable_generation_cost/index.html new file mode 100644 index 0000000000..7399cf1fbb --- /dev/null +++ b/previews/PR1200/model_library/renewable_generation_cost/index.html @@ -0,0 +1,13 @@ + +RenewableGenerationCost · PowerSystems.jl

RenewableGenerationCost

PowerSystems.RenewableGenerationCostType
mutable struct RenewableGenerationCost <: OperationalCost
  • variable::CostCurve: Variable cost represented as a CostCurve

  • curtailment_cost::CostCurve: (default of 0) Cost of curtailing power represented as a CostCurve

RenewableGenerationCost(variable, curtailment_cost)
+RenewableGenerationCost(variable; curtailment_cost)
+RenewableGenerationCost(; variable, curtailment_cost)

An operational cost of renewable generators which includes the variable cost of energy (like a PPA) and the cost of curtailing power. For example, curtailment costs can be used to represent the loss of tax incentives.

The variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.

source
diff --git a/previews/PR1200/model_library/reserves/index.html b/previews/PR1200/model_library/reserves/index.html new file mode 100644 index 0000000000..7770771cd1 --- /dev/null +++ b/previews/PR1200/model_library/reserves/index.html @@ -0,0 +1,120 @@ + +Reserves · PowerSystems.jl

Reserves

Constant Reserve

PowerSystems.ConstantReserveType
mutable struct ConstantReserve{T <: ReserveDirection} <: Reserve{T}
+    name::String
+    available::Bool
+    time_frame::Float64
+    requirement::Float64
+    sustained_time::Float64
+    max_output_fraction::Float64
+    max_participation_factor::Float64
+    deployed_fraction::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A reserve product with a constant procurement requirement, such as 3% of the system base power at all times.

This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)
  • sustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Constant Reserve Group

PowerSystems.ConstantReserveGroupType
mutable struct ConstantReserveGroup{T <: ReserveDirection} <: Service
+    name::String
+    available::Bool
+    requirement::Float64
+    ext::Dict{String, Any}
+    contributing_services::Vector{Service}
+    internal::InfrastructureSystemsInternal
+end

A reserve product met by a group of individual reserves.

The group reserve requirement is added in addition to any individual reserve requirements, and devices that contribute to individual reserves within the group can also contribute to the overarching group reserve requirement. Example: A group of spinning and non-spinning reserves, where online generators providing spinning reserves can also contribute to the non-spinning reserve requirement.

This model has a constant procurement requirement, such as 3% of the system base power at all times. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • requirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • contributing_services::Vector{Service}: (default: Vector{Service}()) Services that contribute to this group requirement. Services must be added for this constraint to have an effect when conducting simulations in PowerSimulations.jl
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Variable Reserve

PowerSystems.VariableReserveType
mutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}
+    name::String
+    available::Bool
+    time_frame::Float64
+    requirement::Float64
+    sustained_time::Float64
+    max_output_fraction::Float64
+    max_participation_factor::Float64
+    deployed_fraction::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.

This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric. To model the time varying requirement, a "requirement" time series should be added to this reserve

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData
  • sustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Reserve Demand Curve

PowerSystems.ReserveDemandCurveType
mutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}
+    variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}
+    name::String
+    available::Bool
+    time_frame::Float64
+    sustained_time::Float64
+    max_participation_factor::Float64
+    deployed_fraction::Float64
+    ext::Dict{String, Any}
+    internal::InfrastructureSystemsInternal
+end

A reserve product with an Operating Reserve Demand Curve (ORDC) for operational simulations.

The ORDC is modeled as a discretized set of (Reserve capacity (MW), Price ($/MWh)) steps, which can vary with time. Use set_variable_cost! to define the ORDCs.

When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}: Create this object with variable = nothing, then add assign a cost curve or time-series of variable_cost using the set_variable_cost! function, which will automatically update this parameter
  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • sustained_time::Float64: (default: 3600.0) the time in seconds that the reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source
diff --git a/previews/PR1200/model_library/storage_cost/index.html b/previews/PR1200/model_library/storage_cost/index.html new file mode 100644 index 0000000000..09dd1435cd --- /dev/null +++ b/previews/PR1200/model_library/storage_cost/index.html @@ -0,0 +1,19 @@ + +StorageCost · PowerSystems.jl

StorageCost

PowerSystems.StorageCostType
mutable struct StorageCost <: OperationalCost
  • charge_variable_cost::CostCurve: (default of 0) Variable cost of charging represented as a CostCurve

  • discharge_variable_cost::CostCurve: (default of 0) Variable cost of discharging represented as a CostCurve

  • fixed::Float64: (default: 0) Fixed cost of operating the storage system

  • start_up::Union{Float64, @NamedTuple{charge::Float64, discharge::Float64}}: (default: 0) Start-up cost

  • shut_down::Float64: (default: 0) Shut-down cost

  • energy_shortage_cost::Float64: (default: 0) Cost incurred by the model for being short of the energy target

  • energy_surplus_cost::Float64: (default: 0) Cost incurred by the model for surplus energy stored

StorageCost(charge_variable_cost, discharge_variable_cost, fixed, start_up, shut_down, energy_shortage_cost, energy_surplus_cost)
+StorageCost(; charge_variable_cost, discharge_variable_cost, fixed, start_up, shut_down, energy_shortage_cost, energy_surplus_cost)

An operational cost for storage units including fixed costs and variable costs to charge or discharge.

This data structure is not intended to represent market storage systems market operations like the submission of buy/sell bids – see MarketBidCost instead.

source
diff --git a/previews/PR1200/model_library/thermal_generation_cost/index.html b/previews/PR1200/model_library/thermal_generation_cost/index.html new file mode 100644 index 0000000000..5a0d7b89c9 --- /dev/null +++ b/previews/PR1200/model_library/thermal_generation_cost/index.html @@ -0,0 +1,15 @@ + +ThermalGenerationCost · PowerSystems.jl

ThermalGenerationCost

PowerSystems.ThermalGenerationCostType
mutable struct ThermalGenerationCost <: OperationalCost
  • variable::ProductionVariableCostCurve: Variable production cost. Can take a CostCurve or FuelCurve

  • fixed::Float64: Fixed cost of keeping the unit online. For some cost represenations this field can be duplicative

  • start_up::Union{Float64, @NamedTuple{hot::Float64, warm::Float64, cold::Float64}}: Start-up cost can take linear or multi-stage cost

  • shut_down::Float64: Cost to turn the unit off

ThermalGenerationCost(variable, fixed, start_up, shut_down)
+ThermalGenerationCost(; variable, fixed, start_up, shut_down)

An operational cost for thermal generators which includes fixed cost, variable cost, shut-down cost, and multiple options for start up costs.

source
diff --git a/previews/PR1200/objects.inv b/previews/PR1200/objects.inv new file mode 100644 index 0000000000..ecaa16473e Binary files /dev/null and b/previews/PR1200/objects.inv differ diff --git a/previews/PR1200/search_index.js b/previews/PR1200/search_index.js new file mode 100644 index 0000000000..868812595b --- /dev/null +++ b/previews/PR1200/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"model_library/generated_Filter/#Filter","page":"Filter","title":"Filter","text":"","category":"section"},{"location":"model_library/generated_Filter/#LCFilter","page":"Filter","title":"LCFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/LCFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.LCFilter","page":"Filter","title":"PowerSystems.LCFilter","text":"mutable struct LCFilter <: Filter\n lf::Float64\n rf::Float64\n cf::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a LCL filter outside the converter\n\nArguments\n\nlf::Float64: filter inductance, validation range: (0, nothing)\nrf::Float64: filter resistance, validation range: (0, nothing)\ncf::Float64: filter capacitance, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the LCFilter model are:\n\nir_filter: Real current out of the filter,\nii_filter: Imaginary current out of the filter\n\nn_states::Int: (Do not modify.) LCFilter has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_cf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_cf","text":"get_cf(value::LCFilter) -> Float64\n\n\nGet LCFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::LCFilter) -> Dict{String, Any}\n\n\nGet LCFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::LCFilter) -> Float64\n\n\nGet LCFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::LCFilter) -> Int64\n\n\nGet LCFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::LCFilter) -> Float64\n\n\nGet LCFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::LCFilter) -> Vector{Symbol}\n\n\nGet LCFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_cf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_cf!","text":"set_cf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::LCFilter, val) -> Any\n\n\nSet LCFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#LCLFilter","page":"Filter","title":"LCLFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/LCLFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.LCLFilter","page":"Filter","title":"PowerSystems.LCLFilter","text":"mutable struct LCLFilter <: Filter\n lf::Float64\n rf::Float64\n cf::Float64\n lg::Float64\n rg::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a LCL filter outside the converter, the states are in the grid's reference frame\n\nArguments\n\nlf::Float64: Series inductance in p.u. of converter filter, validation range: (0, nothing)\nrf::Float64: Series resistance in p.u. of converter filter, validation range: (0, nothing)\ncf::Float64: Shunt capacitance in p.u. of converter filter, validation range: (0, nothing)\nlg::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)\nrg::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the LCLFilter model are:\n\nir_cnv: Real current out of the converter,\nii_cnv: Imaginary current out of the converter,\nvr_filter: Real voltage at the filter's capacitor,\nvi_filter: Imaginary voltage at the filter's capacitor,\nir_filter: Real current out of the filter,\nii_filter: Imaginary current out of the filter\n\nn_states::Int: (Do not modify.) LCLFilter has 6 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_cf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_cf","text":"get_cf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::LCLFilter) -> Dict{String, Any}\n\n\nGet LCLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lg-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_lg","text":"get_lg(value::LCLFilter) -> Float64\n\n\nGet LCLFilter lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::LCLFilter) -> Int64\n\n\nGet LCLFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rg-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_rg","text":"get_rg(value::LCLFilter) -> Float64\n\n\nGet LCLFilter rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::LCLFilter) -> Vector{Symbol}\n\n\nGet LCLFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_cf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_cf!","text":"set_cf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lg!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_lg!","text":"set_lg!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rg!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_rg!","text":"set_rg!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#RLFilter","page":"Filter","title":"RLFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/RLFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.RLFilter","page":"Filter","title":"PowerSystems.RLFilter","text":"mutable struct RLFilter <: Filter\n rf::Float64\n lf::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of RL series filter in algebraic representation\n\nArguments\n\nrf::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)\nlf::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) RLFilter has zero states\nn_states::Int: (Do not modify.) RLFilter has zero states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::RLFilter) -> Dict{String, Any}\n\n\nGet RLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::RLFilter) -> Float64\n\n\nGet RLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::RLFilter) -> Int64\n\n\nGet RLFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::RLFilter) -> Float64\n\n\nGet RLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::RLFilter) -> Vector{Symbol}\n\n\nGet RLFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::RLFilter, val) -> Any\n\n\nSet RLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::RLFilter, val) -> Any\n\n\nSet RLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::RLFilter, val) -> Any\n\n\nSet RLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"how_to/powersystembuilder/#psb","page":"...load a system from PowerSystemCaseBuilder","title":"Load a system from PowerSystemCaseBuilder","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"how_to/powersystembuilder/#Introduction","page":"...load a system from PowerSystemCaseBuilder","title":"Introduction","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"PowerSystemCaseBuilder.jl provides a utility to manage a library of Systems. The package has utilities to list the available system data and to create instances of each system. By keeping track of which systems have been constructed locally, it makes the re-instantiation of systems efficient by utilizing the serialization features and avoiding the parsing process for systems that have been previously constructed.","category":"page"},{"location":"how_to/powersystembuilder/#Dependencies","page":"...load a system from PowerSystemCaseBuilder","title":"Dependencies","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"using PowerSystemCaseBuilder","category":"page"},{"location":"how_to/powersystembuilder/#List-all-systems-in-library","page":"...load a system from PowerSystemCaseBuilder","title":"List all systems in library","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"show_systems()","category":"page"},{"location":"how_to/powersystembuilder/#Systems-can-be-listed-by-category","page":"...load a system from PowerSystemCaseBuilder","title":"Systems can be listed by category","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"The available categories can be displayed with:","category":"page"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"show_categories()","category":"page"},{"location":"how_to/powersystembuilder/#Create-a-System","page":"...load a system from PowerSystemCaseBuilder","title":"Create a System","text":"","category":"section"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"The first time this is run, it will parse csv data. Subsequent executions will rely on serialized data and will execute much faster since the employ deserialization","category":"page"},{"location":"how_to/powersystembuilder/","page":"...load a system from PowerSystemCaseBuilder","title":"...load a system from PowerSystemCaseBuilder","text":"sys = build_system(PSITestSystems, \"c_sys5_uc\")","category":"page"},{"location":"model_library/generated_Machine/#Machine","page":"Machine","title":"Machine","text":"","category":"section"},{"location":"model_library/generated_Machine/#AndersonFouadMachine","page":"Machine","title":"AndersonFouadMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/AndersonFouadMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.AndersonFouadMachine","page":"Machine","title":"PowerSystems.AndersonFouadMachine","text":"mutable struct AndersonFouadMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 6-states synchronous machine: Anderson-Fouad model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: (Do not modify.) The states AndersonFouadMachine has 6 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::AndersonFouadMachine) -> Dict{String, Any}\n\n\nGet AndersonFouadMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::AndersonFouadMachine) -> Int64\n\n\nGet AndersonFouadMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::AndersonFouadMachine) -> Vector{Symbol}\n\n\nGet AndersonFouadMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#BaseMachine","page":"Machine","title":"BaseMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/BaseMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.BaseMachine","page":"Machine","title":"PowerSystems.BaseMachine","text":"mutable struct BaseMachine <: Machine\n R::Float64\n Xd_p::Float64\n eq_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Classic Machine: GENCLS in PSSE and PSLF\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd_p::Float64: Reactance after EMF in machine per unit, validation range: (0, nothing)\neq_p::Float64: Fixed EMF behind the impedance, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) BaseMachine has no states\nn_states::Int: (Do not modify.) BaseMachine has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::BaseMachine) -> Float64\n\n\nGet BaseMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::BaseMachine) -> Float64\n\n\nGet BaseMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_eq_p-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_eq_p","text":"get_eq_p(value::BaseMachine) -> Float64\n\n\nGet BaseMachine eq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::BaseMachine) -> Dict{String, Any}\n\n\nGet BaseMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::BaseMachine) -> Int64\n\n\nGet BaseMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::BaseMachine) -> Vector{Symbol}\n\n\nGet BaseMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_eq_p!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_eq_p!","text":"set_eq_p!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine eq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#FullMachine","page":"Machine","title":"FullMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/FullMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.FullMachine","page":"Machine","title":"PowerSystems.FullMachine","text":"mutable struct FullMachine <: Machine\n R::Float64\n R_f::Float64\n R_1d::Float64\n R_1q::Float64\n L_d::Float64\n L_q::Float64\n L_ad::Float64\n L_aq::Float64\n L_f1d::Float64\n L_ff::Float64\n L_1d::Float64\n L_1q::Float64\n ext::Dict{String, Any}\n inv_d_fluxlink::Array{Float64,2}\n inv_q_fluxlink::Array{Float64,2}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is NOT neglected. Only one q-axis damping circuit is considered. All parameters are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nR_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)\nR_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski, validation range: (0, nothing)\nR_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski, validation range: (0, nothing)\nL_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski), validation range: (0, nothing)\nL_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur, validation range: (0, nothing)\nL_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)\nL_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)\nL_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)\nL_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninv_d_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.127, 3.130, 3.131 From Kundur\ninv_q_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.128, 3.132 From Kundur\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψd: d-axis stator flux,\nψq: q-axis stator flux,\nψf: field rotor flux,\nψ1d: d-axis rotor damping flux,\nψ1q: q-axis rotor damping flux\n\nn_states::Int: (Do not modify.) FullMachine has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_1d","text":"get_L_1d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_1q","text":"get_L_1q(value::FullMachine) -> Float64\n\n\nGet FullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ad-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_ad","text":"get_L_ad(value::FullMachine) -> Float64\n\n\nGet FullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_aq-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_aq","text":"get_L_aq(value::FullMachine) -> Float64\n\n\nGet FullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_d","text":"get_L_d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_f1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_f1d","text":"get_L_f1d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ff-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_ff","text":"get_L_ff(value::FullMachine) -> Float64\n\n\nGet FullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_q","text":"get_L_q(value::FullMachine) -> Float64\n\n\nGet FullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::FullMachine) -> Float64\n\n\nGet FullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_1d","text":"get_R_1d(value::FullMachine) -> Float64\n\n\nGet FullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_1q","text":"get_R_1q(value::FullMachine) -> Float64\n\n\nGet FullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_f-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_f","text":"get_R_f(value::FullMachine) -> Float64\n\n\nGet FullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::FullMachine) -> Dict{String, Any}\n\n\nGet FullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_d_fluxlink-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_inv_d_fluxlink","text":"get_inv_d_fluxlink(value::FullMachine) -> Matrix{Float64}\n\n\nGet FullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_q_fluxlink-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_inv_q_fluxlink","text":"get_inv_q_fluxlink(value::FullMachine) -> Matrix{Float64}\n\n\nGet FullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::FullMachine) -> Int64\n\n\nGet FullMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::FullMachine) -> Vector{Symbol}\n\n\nGet FullMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1d!","text":"set_L_1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1q!","text":"set_L_1q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ad!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ad!","text":"set_L_ad!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_aq!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_aq!","text":"set_L_aq!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_d!","text":"set_L_d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_f1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_f1d!","text":"set_L_f1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ff!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ff!","text":"set_L_ff!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_q!","text":"set_L_q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1d!","text":"set_R_1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1q!","text":"set_R_1q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_f!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_f!","text":"set_R_f!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::FullMachine, val) -> Any\n\n\nSet FullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_d_fluxlink!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_d_fluxlink!","text":"set_inv_d_fluxlink!(value::FullMachine, val) -> Any\n\n\nSet FullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_q_fluxlink!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_q_fluxlink!","text":"set_inv_q_fluxlink!(value::FullMachine, val) -> Any\n\n\nSet FullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#MarconatoMachine","page":"Machine","title":"MarconatoMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/MarconatoMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.MarconatoMachine","page":"Machine","title":"PowerSystems.MarconatoMachine","text":"mutable struct MarconatoMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n T_AA::Float64\n ext::Dict{String, Any}\n γd::Float64\n γq::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 6-states synchronous machine: Marconato model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nT_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nγd::Float64: (Do not modify.) Internal equation\nγq::Float64: (Do not modify.) Internal equation\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: (Do not modify.) MarconatoMachine has 6 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_T_AA-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_T_AA","text":"get_T_AA(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::MarconatoMachine) -> Dict{String, Any}\n\n\nGet MarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::MarconatoMachine) -> Int64\n\n\nGet MarconatoMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::MarconatoMachine) -> Vector{Symbol}\n\n\nGet MarconatoMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γd-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_γd","text":"get_γd(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γq-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_γq","text":"get_γq(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_T_AA!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_T_AA!","text":"set_T_AA!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γd!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γd!","text":"set_γd!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γq!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γq!","text":"set_γq!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#OneDOneQMachine","page":"Machine","title":"OneDOneQMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/OneDOneQMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.OneDOneQMachine","page":"Machine","title":"PowerSystems.OneDOneQMachine","text":"mutable struct OneDOneQMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Td0_p::Float64\n Tq0_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage\n\nn_states::Int: (Do not modify.) OneDOneQMachine has 2 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::OneDOneQMachine) -> Dict{String, Any}\n\n\nGet OneDOneQMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::OneDOneQMachine) -> Int64\n\n\nGet OneDOneQMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::OneDOneQMachine) -> Vector{Symbol}\n\n\nGet OneDOneQMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#RoundRotorExponential","page":"Machine","title":"RoundRotorExponential","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorExponential.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorExponential","page":"Machine","title":"PowerSystems.RoundRotorExponential","text":"mutable struct RoundRotorExponential <: Machine\n base_machine::RoundRotorMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n4-states round-rotor synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROE model in PSSE and PSLF.\n\nArguments\n\nbase_machine::RoundRotorMachine: Round Rotor Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#RoundRotorMachine","page":"Machine","title":"RoundRotorMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorMachine","page":"Machine","title":"PowerSystems.RoundRotorMachine","text":"mutable struct RoundRotorMachine <: Machine\n R::Float64\n Td0_p::Float64\n Td0_pp::Float64\n Tq0_p::Float64\n Tq0_pp::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xl::Float64\n Se::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n γ_q2::Float64\n γ_qd::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states round-rotor synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU or GENROE model in PSSE and PSLF\n\nArguments\n\nR::Float64: Armature resistance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)\nXl::Float64: Stator leakage reactance, validation range: (0, nothing)\nSe::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: S(1.0) = B(|ψ_pp|-A)^2\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nγ_d1::Float64: (Do not modify.) γ_d1 parameter\nγ_q1::Float64: (Do not modify.) γ_q1 parameter\nγ_d2::Float64: (Do not modify.) γ_d2 parameter\nγ_q2::Float64: (Do not modify.) γ_q2 parameter\nγ_qd::Float64: (Do not modify.) γ_qd parameter\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\neq_p: q-axis generator voltage behind the transient reactance,\ned_p: d-axis generator voltage behind the transient reactance,\nψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,\nψ_kq: flux linkage in the first equivalent damping circuit in the d-axis\n\nn_states::Int: (Do not modify.) RoundRotorMachine has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Se-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Se","text":"get_Se(value::RoundRotorMachine) -> Tuple{Float64, Float64}\n\n\nGet RoundRotorMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::RoundRotorMachine) -> Dict{String, Any}\n\n\nGet RoundRotorMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::RoundRotorMachine) -> Int64\n\n\nGet RoundRotorMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::RoundRotorMachine) -> Vector{Symbol}\n\n\nGet RoundRotorMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q2-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_q2","text":"get_γ_q2(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_qd-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_qd","text":"get_γ_qd(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_qd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Se!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Se!","text":"set_Se!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q2!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q2!","text":"set_γ_q2!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_qd!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_qd!","text":"set_γ_qd!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_qd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#RoundRotorQuadratic","page":"Machine","title":"RoundRotorQuadratic","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorQuadratic.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorQuadratic","page":"Machine","title":"PowerSystems.RoundRotorQuadratic","text":"mutable struct RoundRotorQuadratic <: Machine\n base_machine::RoundRotorMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n4-states round-rotor synchronous machine with quadratic saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU model in PSSE and PSLF.\n\nArguments\n\nbase_machine::RoundRotorMachine: Round Rotor Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SalientPoleExponential","page":"Machine","title":"SalientPoleExponential","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleExponential.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleExponential","page":"Machine","title":"PowerSystems.SalientPoleExponential","text":"mutable struct SalientPoleExponential <: Machine\n base_machine::SalientPoleMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAE in PSSE and PSLF.\n\nArguments:\n\nbase_machine::SalientPoleMachine: Salient Pole Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SalientPoleMachine","page":"Machine","title":"SalientPoleMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleMachine","page":"Machine","title":"PowerSystems.SalientPoleMachine","text":"mutable struct SalientPoleMachine <: Machine\n R::Float64\n Td0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xd_pp::Float64\n Xl::Float64\n Se::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 3-states salient-pole synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.1 (Model 2.1). GENSAL or GENSAE model in PSSE and PSLF\n\nArguments\n\nR::Float64: Armature resistance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)\nXl::Float64: Stator leakage reactance, validation range: (0, nothing)\nSe::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: Se(eqp) = B(eqp-A)^2\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nγ_d1::Float64: (Do not modify.) γ_d1 parameter\nγ_q1::Float64: (Do not modify.) γ_q1 parameter\nγ_d2::Float64: (Do not modify.) γ_d2 parameter\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\neq_p: q-axis generator voltage behind the transient reactance,\nψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,\nψq_pp: phasonf of the subtransient flux linkage in the q-axis\n\nn_states::Int: (Do not modify.) SalientPoleMachine has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Se-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Se","text":"get_Se(value::SalientPoleMachine) -> Tuple{Float64, Float64}\n\n\nGet SalientPoleMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SalientPoleMachine) -> Dict{String, Any}\n\n\nGet SalientPoleMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SalientPoleMachine) -> Int64\n\n\nGet SalientPoleMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SalientPoleMachine) -> Vector{Symbol}\n\n\nGet SalientPoleMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Se!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Se!","text":"set_Se!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SalientPoleQuadratic","page":"Machine","title":"SalientPoleQuadratic","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleQuadratic.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleQuadratic","page":"Machine","title":"PowerSystems.SalientPoleQuadratic","text":"mutable struct SalientPoleQuadratic <: Machine\n base_machine::SalientPoleMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAL in PSSE and PSLF.\n\nArguments:\n\nbase_machine::SalientPoleMachine: Salient Pole Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SauerPaiMachine","page":"Machine","title":"SauerPaiMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SauerPaiMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SauerPaiMachine","page":"Machine","title":"PowerSystems.SauerPaiMachine","text":"mutable struct SauerPaiMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Xl::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n γ_q2::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of synchronous machine: Sauer Pai model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXl::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nγ_d1::Float64: (Do not modify.) Internal equation\nγ_q1::Float64: (Do not modify.) Internal equation\nγ_d2::Float64: (Do not modify.) Internal equation\nγ_q2::Float64: (Do not modify.) Internal equation\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage\nψd_pp: subtransient flux linkage in the d-axis\nψq_pp: subtransient flux linkage in the q-axis\n\nn_states::Int: (Do not modify.) SauerPaiMachine has 6 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SauerPaiMachine) -> Dict{String, Any}\n\n\nGet SauerPaiMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SauerPaiMachine) -> Int64\n\n\nGet SauerPaiMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SauerPaiMachine) -> Vector{Symbol}\n\n\nGet SauerPaiMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q2-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_q2","text":"get_γ_q2(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q2!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q2!","text":"set_γ_q2!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleAFMachine","page":"Machine","title":"SimpleAFMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleAFMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleAFMachine","page":"Machine","title":"PowerSystems.SimpleAFMachine","text":"mutable struct SimpleAFMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states simplified Anderson-Fouad (SimpleAFMachine) model. The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected. If transmission dynamics is considered use the full order Anderson Fouad model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: (Do not modify.) SimpleAFMachine has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleAFMachine) -> Dict{String, Any}\n\n\nGet SimpleAFMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleAFMachine) -> Int64\n\n\nGet SimpleAFMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleAFMachine) -> Vector{Symbol}\n\n\nGet SimpleAFMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleFullMachine","page":"Machine","title":"SimpleFullMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleFullMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleFullMachine","page":"Machine","title":"PowerSystems.SimpleFullMachine","text":"mutable struct SimpleFullMachine <: Machine\n R::Float64\n R_f::Float64\n R_1d::Float64\n R_1q::Float64\n L_d::Float64\n L_q::Float64\n L_ad::Float64\n L_aq::Float64\n L_f1d::Float64\n L_ff::Float64\n L_1d::Float64\n L_1q::Float64\n ext::Dict{String, Any}\n inv_d_fluxlink::Array{Float64,2}\n inv_q_fluxlink::Array{Float64,2}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is neglected. This is standard when transmission network dynamics is neglected. Only one q-axis damping circuit is considered. All per unit are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nR_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)\nR_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski, validation range: (0, nothing)\nR_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski, validation range: (0, nothing)\nL_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski), validation range: (0, nothing)\nL_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur, validation range: (0, nothing)\nL_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)\nL_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)\nL_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)\nL_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninv_d_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.127, 3.130, 3.131 From Kundur\ninv_q_fluxlink::Array{Float64,2}: (Do not modify.) Equations 3.128, 3.132 From Kundur\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψf: field rotor flux,\nψ1d: d-axis rotor damping flux,\nψ1q: q-axis rotor damping flux\n\nn_states::Int: (Do not modify.) SimpleFullMachine has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_1d","text":"get_L_1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_1q","text":"get_L_1q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ad-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_ad","text":"get_L_ad(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_aq-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_aq","text":"get_L_aq(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_d","text":"get_L_d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_f1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_f1d","text":"get_L_f1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ff-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_ff","text":"get_L_ff(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_q","text":"get_L_q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_1d","text":"get_R_1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_1q","text":"get_R_1q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_f-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_f","text":"get_R_f(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleFullMachine) -> Dict{String, Any}\n\n\nGet SimpleFullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_d_fluxlink-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_inv_d_fluxlink","text":"get_inv_d_fluxlink(\n value::SimpleFullMachine\n) -> Matrix{Float64}\n\n\nGet SimpleFullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_q_fluxlink-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_inv_q_fluxlink","text":"get_inv_q_fluxlink(\n value::SimpleFullMachine\n) -> Matrix{Float64}\n\n\nGet SimpleFullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleFullMachine) -> Int64\n\n\nGet SimpleFullMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleFullMachine) -> Vector{Symbol}\n\n\nGet SimpleFullMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1d!","text":"set_L_1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1q!","text":"set_L_1q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ad!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ad!","text":"set_L_ad!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_aq!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_aq!","text":"set_L_aq!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_d!","text":"set_L_d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_f1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_f1d!","text":"set_L_f1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ff!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ff!","text":"set_L_ff!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_q!","text":"set_L_q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1d!","text":"set_R_1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1q!","text":"set_R_1q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_f!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_f!","text":"set_R_f!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_d_fluxlink!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_d_fluxlink!","text":"set_inv_d_fluxlink!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_q_fluxlink!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_q_fluxlink!","text":"set_inv_q_fluxlink!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleMarconatoMachine","page":"Machine","title":"SimpleMarconatoMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleMarconatoMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleMarconatoMachine","page":"Machine","title":"PowerSystems.SimpleMarconatoMachine","text":"mutable struct SimpleMarconatoMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n T_AA::Float64\n ext::Dict{String, Any}\n γd::Float64\n γq::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nT_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nγd::Float64: (Do not modify.) Internal equation\nγq::Float64: (Do not modify.) Internal equation\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: (Do not modify.) SimpleMarconatoMachine has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_T_AA-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_T_AA","text":"get_T_AA(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleMarconatoMachine) -> Dict{String, Any}\n\n\nGet SimpleMarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleMarconatoMachine) -> Int64\n\n\nGet SimpleMarconatoMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleMarconatoMachine) -> Vector{Symbol}\n\n\nGet SimpleMarconatoMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γd-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_γd","text":"get_γd(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γq-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_γq","text":"get_γq(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_T_AA!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_T_AA!","text":"set_T_AA!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γd!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γd!","text":"set_γd!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γq!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γq!","text":"set_γq!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hydro_generation_cost/#HydroGenerationCost","page":"HydroGenerationCost","title":"HydroGenerationCost","text":"","category":"section"},{"location":"model_library/hydro_generation_cost/","page":"HydroGenerationCost","title":"HydroGenerationCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/HydroGenerationCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/hydro_generation_cost/#PowerSystems.HydroGenerationCost","page":"HydroGenerationCost","title":"PowerSystems.HydroGenerationCost","text":"mutable struct HydroGenerationCost <: OperationalCost\n\nvariable::ProductionVariableCostCurve: Production variable cost represented by a FuelCurve, where the fuel is water, or a CostCurve in currency.\nfixed::Float64: (default: 0) Fixed cost of keeping the unit online. For some cost represenations this field can be duplicative\n\nHydroGenerationCost(variable, fixed)\nHydroGenerationCost(; variable, fixed)\n\nAn operational cost of a hydropower generator which includes fixed and variable cost. Variable costs can be used to represent the cost of curtailment if negative values are used or the opportunity cost of water if the costs are positive. It also supports fuel curves to model specific water intake. \n\nThe variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.\n\n\n\n\n\n","category":"type"},{"location":"model_library/hydro_generation_cost/#PowerSystems.get_fixed-Tuple{HydroGenerationCost}","page":"HydroGenerationCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::HydroGenerationCost) -> Float64\n\n\nGet HydroGenerationCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hydro_generation_cost/#PowerSystems.get_variable-Tuple{HydroGenerationCost}","page":"HydroGenerationCost","title":"PowerSystems.get_variable","text":"get_variable(\n value::HydroGenerationCost\n) -> ProductionVariableCostCurve\n\n\nGet HydroGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hydro_generation_cost/#PowerSystems.set_fixed!-Tuple{HydroGenerationCost, Any}","page":"HydroGenerationCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::HydroGenerationCost, val) -> Any\n\n\nSet HydroGenerationCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hydro_generation_cost/#PowerSystems.set_variable!-Tuple{HydroGenerationCost, Any}","page":"HydroGenerationCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::HydroGenerationCost, val) -> Any\n\n\nSet HydroGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"explanation/type_structure/#type_structure","page":"Type Structure","title":"Type Structure","text":"","category":"section"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"PowerSystems.jl provides a type hierarchy to contain power system data.","category":"page"},{"location":"explanation/type_structure/#Types-in-PowerSystems","page":"Type Structure","title":"Types in PowerSystems","text":"","category":"section"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"In PowerSystems.jl, data that describes infrastructure components is held in structs. For example, an ACBus is a struct with the following parameters to describe a bus on an AC network:","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"using PowerSystems #hide\nimport TypeTree: tt #hide\ndocs_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"utils\"); #hide\ninclude(joinpath(docs_dir, \"docs_utils.jl\")); #hide\nprint_struct(ACBus) #hide","category":"page"},{"location":"explanation/type_structure/#Type-Hierarchy","page":"Type Structure","title":"Type Hierarchy","text":"","category":"section"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"PowerSystems is intended to organize data by the behavior of the devices that the data represents. A type hierarchy has been defined with several levels of abstract types starting with InfrastructureSystemsType. There are a bunch of subtypes of InfrastructureSystemsType, but the important ones to know about are:","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"System: overarching struct that collects all of the Components\nComponent: includes all elements of power system data\nTopology: includes non physical elements describing network connectivity\nService: includes descriptions of system requirements (other than energy balance)\nDevice: includes descriptions of all the physical devices in a power system\nInfrastructureSystems.DeviceParameter: includes structs that hold data describing the dynamic, or economic capabilities of Device.\nTimeSeriesData: Includes all time series types\nForecast: includes structs to define time series of forecasted data where multiple values can represent each time stamp\nStaticTimeSeries: includes structs to define time series with a single value for each time stamp","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"The abstract hierarchy enables categorization of the devices by their operational characteristics and modeling requirements.","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"For instance, generation is classified by the distinctive data requirements for modeling in three categories: ThermalGen, RenewableGen, and HydroGen.","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"PowerSystems.jl has a category Topology of topological components (e.g., ACBus, Arc), separate from the physical components.","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"The hierarchy also includes components absent in standard data models, such as services. The services category includes reserves, transfers and AGC. The power of PowerSystems.jl lies in providing the abstraction without an implicit mathematical representation of the component.","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"As a result of this design, developers can define model logic entirely based on abstract types and create generic code to support modeling technologies that are not yet implemented in the package.","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"","category":"page"},{"location":"explanation/type_structure/","page":"Type Structure","title":"Type Structure","text":"⠀ ```","category":"page"},{"location":"model_library/generated_ConstantReserveNonSpinning/#ConstantReserveNonSpinning","page":"ConstantReserveNonSpinning","title":"ConstantReserveNonSpinning","text":"","category":"section"},{"location":"model_library/generated_ConstantReserveNonSpinning/","page":"ConstantReserveNonSpinning","title":"ConstantReserveNonSpinning","text":"Modules = [PowerSystems]\nPages = [\"generated/ConstantReserveNonSpinning.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.ConstantReserveNonSpinning","page":"ConstantReserveNonSpinning","title":"PowerSystems.ConstantReserveNonSpinning","text":"mutable struct ConstantReserveNonSpinning <: ReserveNonSpinning\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA non-spinning reserve product with a constant procurement requirement, such as 3% of the system base power at all times.\n\nThis reserve product includes back-up generators that might not be currently synchronized with the power system, but can come online quickly after an unexpected contingency, such as a transmission line or generator outage. This is only an upwards reserve. For faster-responding upwards or downwards reserves from components already synchronized with the system, see ConstantReserve\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\ntime_frame::Float64: the saturation time frame in minutes that a participating device must provide its reserve contribution, validation range: (0, nothing)\nrequirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)\nsustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)\nmax_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)\nmax_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)\ndeployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ConstantReserveNonSpinning/#InfrastructureSystems.get_name-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"InfrastructureSystems.get_name","text":"get_name(value::ConstantReserveNonSpinning) -> String\n\n\nGet ConstantReserveNonSpinning name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_available-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_available","text":"get_available(value::ConstantReserveNonSpinning) -> Bool\n\n\nGet ConstantReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_deployed_fraction-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(\n value::ConstantReserveNonSpinning\n) -> Float64\n\n\nGet ConstantReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_ext-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_ext","text":"get_ext(\n value::ConstantReserveNonSpinning\n) -> Dict{String, Any}\n\n\nGet ConstantReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_max_output_fraction-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(\n value::ConstantReserveNonSpinning\n) -> Float64\n\n\nGet ConstantReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_max_participation_factor-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::ConstantReserveNonSpinning\n) -> Float64\n\n\nGet ConstantReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_requirement-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_requirement","text":"get_requirement(value::ConstantReserveNonSpinning) -> Any\n\n\nGet ConstantReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_sustained_time-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(\n value::ConstantReserveNonSpinning\n) -> Float64\n\n\nGet ConstantReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.get_time_frame-Tuple{ConstantReserveNonSpinning}","page":"ConstantReserveNonSpinning","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::ConstantReserveNonSpinning) -> Float64\n\n\nGet ConstantReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_available!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_available!","text":"set_available!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_deployed_fraction!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_ext!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_ext!","text":"set_ext!(value::ConstantReserveNonSpinning, val) -> Any\n\n\nSet ConstantReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_max_output_fraction!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_max_participation_factor!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_requirement!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_requirement!","text":"set_requirement!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_sustained_time!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ConstantReserveNonSpinning/#PowerSystems.set_time_frame!-Tuple{ConstantReserveNonSpinning, Any}","page":"ConstantReserveNonSpinning","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(\n value::ConstantReserveNonSpinning,\n val\n) -> Any\n\n\nSet ConstantReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS","page":"PSS","title":"PSS","text":"","category":"section"},{"location":"model_library/generated_PSS/#IEEEST","page":"PSS","title":"IEEEST","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/IEEEST.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.IEEEST","page":"PSS","title":"PowerSystems.IEEEST","text":"mutable struct IEEEST <: PSS\n input_code::Int\n remote_bus_control::Int\n A1::Float64\n A2::Float64\n A3::Float64\n A4::Float64\n A5::Float64\n A6::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T5::Float64\n T6::Float64\n Ks::Float64\n Ls_lim::Tuple{Float64, Float64}\n Vcu::Float64\n Vcl::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Stabilizing Model PSS. \n\nArguments\n\ninput_code::Int: Code input for stabilizer, validation range: (1, 6)\nremote_bus_control::Int: ACBus identification number for control. 0 identifies the bus connected to this component\nA1::Float64: Filter coefficient, validation range: (0, nothing)\nA2::Float64: Filter coefficient, validation range: (0, nothing)\nA3::Float64: Filter coefficient, validation range: (0, nothing)\nA4::Float64: Filter coefficient, validation range: (0, nothing)\nA5::Float64: Filter coefficient, validation range: (0, nothing)\nA6::Float64: Filter coefficient, validation range: (0, nothing)\nT1::Float64: Time constant, validation range: (0, 10)\nT2::Float64: Time constant, validation range: (0, 10)\nT3::Float64: Time constant, validation range: (0, 10)\nT4::Float64: Time constant, validation range: (0, 10)\nT5::Float64: Time constant, validation range: (0, 10)\nT6::Float64: Time constant, validation range: (eps(), 2.0)\nKs::Float64: Proportional gain, validation range: (0, nothing)\nLs_lim::Tuple{Float64, Float64}: PSS output limits for regulator output (Ls_min, Ls_max)\nVcu::Float64: Cutoff limiter upper bound, validation range: (0, 1.25)\nVcl::Float64: Cutoff limiter lower bound, validation range: (0, 1.0)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p1: 1st filter integration,\nx_p2: 2nd filter integration, \nx_p3: 3rd filter integration, \nx_p4: 4rd filter integration, \nx_p5: T1/T2 lead-lag integrator, \nx_p6: T3/T4 lead-lag integrator, \n:x_p7 last integer,\n\nn_states::Int: (Do not modify.) IEEEST has 7 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEEST has 7 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_A1-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A1","text":"get_A1(value::IEEEST) -> Float64\n\n\nGet IEEEST A1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A2-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A2","text":"get_A2(value::IEEEST) -> Float64\n\n\nGet IEEEST A2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A3-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A3","text":"get_A3(value::IEEEST) -> Float64\n\n\nGet IEEEST A3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A4-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A4","text":"get_A4(value::IEEEST) -> Float64\n\n\nGet IEEEST A4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A5-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A5","text":"get_A5(value::IEEEST) -> Float64\n\n\nGet IEEEST A5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A6-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A6","text":"get_A6(value::IEEEST) -> Float64\n\n\nGet IEEEST A6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Ks","text":"get_Ks(value::IEEEST) -> Float64\n\n\nGet IEEEST Ks.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ls_lim-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Ls_lim","text":"get_Ls_lim(value::IEEEST) -> Tuple{Float64, Float64}\n\n\nGet IEEEST Ls_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::IEEEST) -> Float64\n\n\nGet IEEEST T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::IEEEST) -> Float64\n\n\nGet IEEEST T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::IEEEST) -> Float64\n\n\nGet IEEEST T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::IEEEST) -> Float64\n\n\nGet IEEEST T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T5-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T5","text":"get_T5(value::IEEEST) -> Float64\n\n\nGet IEEEST T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::IEEEST) -> Float64\n\n\nGet IEEEST T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vcl-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Vcl","text":"get_Vcl(value::IEEEST) -> Float64\n\n\nGet IEEEST Vcl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vcu-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Vcu","text":"get_Vcu(value::IEEEST) -> Float64\n\n\nGet IEEEST Vcu.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::IEEEST) -> Dict{String, Any}\n\n\nGet IEEEST ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_input_code","text":"get_input_code(value::IEEEST) -> Int64\n\n\nGet IEEEST input_code.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEEST) -> Int64\n\n\nGet IEEEST n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_remote_bus_control","text":"get_remote_bus_control(value::IEEEST) -> Int64\n\n\nGet IEEEST remote_bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::IEEEST) -> Vector{Symbol}\n\n\nGet IEEEST states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::IEEEST) -> Vector{StateTypes}\n\n\nGet IEEEST states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A1!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A1!","text":"set_A1!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A2!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A2!","text":"set_A2!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A3!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A3!","text":"set_A3!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A4!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A4!","text":"set_A4!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A5!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A5!","text":"set_A5!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A6!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A6!","text":"set_A6!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Ks!","text":"set_Ks!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Ks.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ls_lim!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Ls_lim!","text":"set_Ls_lim!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Ls_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T5!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T5!","text":"set_T5!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vcl!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Vcl!","text":"set_Vcl!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Vcl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vcu!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Vcu!","text":"set_Vcu!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Vcu.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEEST, val) -> Any\n\n\nSet IEEEST ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_input_code!","text":"set_input_code!(value::IEEEST, val) -> Any\n\n\nSet IEEEST input_code.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control!","text":"set_remote_bus_control!(value::IEEEST, val) -> Any\n\n\nSet IEEEST remote_bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEEST, val) -> Any\n\n\nSet IEEEST states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2A","page":"PSS","title":"PSS2A","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2A","page":"PSS","title":"PowerSystems.PSS2A","text":"mutable struct PSS2A <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n Vst_lim::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 6)\nremote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)\nremote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)\nKs3::Float64: Gain for second input, validation range: (0, nothing)\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag,\n\nn_states::Int: (Do not modify.) IEEEST has 16 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEEST has 16 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2A) -> Int64\n\n\nGet PSS2A M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2A) -> Int64\n\n\nGet PSS2A N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2A) -> Float64\n\n\nGet PSS2A T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2A) -> Float64\n\n\nGet PSS2A T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2A) -> Float64\n\n\nGet PSS2A T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2A) -> Float64\n\n\nGet PSS2A T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2A) -> Float64\n\n\nGet PSS2A T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2A) -> Float64\n\n\nGet PSS2A T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2A) -> Float64\n\n\nGet PSS2A T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2A) -> Float64\n\n\nGet PSS2A T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2A) -> Tuple{Float64, Float64}\n\n\nGet PSS2A Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2A) -> Dict{String, Any}\n\n\nGet PSS2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2A) -> Int64\n\n\nGet PSS2A input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2A) -> Int64\n\n\nGet PSS2A input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2A) -> Int64\n\n\nGet PSS2A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2A) -> Int64\n\n\nGet PSS2A remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2A) -> Int64\n\n\nGet PSS2A remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2A) -> Vector{Symbol}\n\n\nGet PSS2A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2A) -> Vector{StateTypes}\n\n\nGet PSS2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2A, val) -> Any\n\n\nSet PSS2A M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2A, val) -> Any\n\n\nSet PSS2A N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2A, val) -> Any\n\n\nSet PSS2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2A, val) -> Any\n\n\nSet PSS2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2B","page":"PSS","title":"PSS2B","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2B","page":"PSS","title":"PowerSystems.PSS2B","text":"mutable struct PSS2B <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T10::Float64\n T11::Float64\n Vs1_lim::Tuple{Float64, Float64}\n Vs2_lim::Tuple{Float64, Float64}\n Vst_lim::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE 421.5 2005 PSS2B IEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 6)\nremote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)\nremote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)\nKs3::Float64: Gain for second input, validation range: (0, nothing)\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nT10::Float64: Time constant for third lead-lag block, validation range: (0, nothing)\nT11::Float64: Time constant for third lead-lag block, validation range: (0, nothing)\nVs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)\nVs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag, \nx_p17: 3rd lead-lag,\n\nn_states::Int: (Do not modify.) IEEEST has 17 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEEST has 17 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2B) -> Int64\n\n\nGet PSS2B M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2B) -> Int64\n\n\nGet PSS2B N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2B) -> Float64\n\n\nGet PSS2B T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T10-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T10","text":"get_T10(value::PSS2B) -> Float64\n\n\nGet PSS2B T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T11-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T11","text":"get_T11(value::PSS2B) -> Float64\n\n\nGet PSS2B T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2B) -> Float64\n\n\nGet PSS2B T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2B) -> Float64\n\n\nGet PSS2B T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2B) -> Float64\n\n\nGet PSS2B T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2B) -> Float64\n\n\nGet PSS2B T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2B) -> Float64\n\n\nGet PSS2B T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2B) -> Float64\n\n\nGet PSS2B T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2B) -> Float64\n\n\nGet PSS2B T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs1_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vs1_lim","text":"get_Vs1_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs2_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vs2_lim","text":"get_Vs2_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2B) -> Dict{String, Any}\n\n\nGet PSS2B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2B) -> Int64\n\n\nGet PSS2B input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2B) -> Int64\n\n\nGet PSS2B input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2B) -> Int64\n\n\nGet PSS2B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2B) -> Int64\n\n\nGet PSS2B remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2B) -> Int64\n\n\nGet PSS2B remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2B) -> Vector{Symbol}\n\n\nGet PSS2B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2B) -> Vector{StateTypes}\n\n\nGet PSS2B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2B, val) -> Any\n\n\nSet PSS2B M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2B, val) -> Any\n\n\nSet PSS2B N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T10!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T10!","text":"set_T10!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T11!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T11!","text":"set_T11!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs1_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vs1_lim!","text":"set_Vs1_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs2_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vs2_lim!","text":"set_Vs2_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2B, val) -> Any\n\n\nSet PSS2B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2B, val) -> Any\n\n\nSet PSS2B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2C","page":"PSS","title":"PSS2C","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2C.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2C","page":"PSS","title":"PowerSystems.PSS2C","text":"mutable struct PSS2C <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T10::Float64\n T11::Float64\n Vs1_lim::Tuple{Float64, Float64}\n Vs2_lim::Tuple{Float64, Float64}\n Vst_lim::Tuple{Float64, Float64}\n T12::Float64\n T13::Float64\n PSS_Hysteresis_param::Tuple{Float64, Float64}\n Xcomp::Float64\n Tcomp::Float64\n hysteresis_binary_logic::Int\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE 421.5 2016 PSS2C IEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 7)\nremote_bus_control_1::Int: First Input remote bus identification number for control. 0 identifies the local bus connected to this component\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6)\nremote_bus_control_2::Int: Second Input remote bus identification number for control. 0 identifies the local bus connected to this component\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8)\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8)\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing)\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing)\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing)\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing)\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing)\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing)\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing)\nKs3::Float64: Gain for second input, validation range: (0, nothing)\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing)\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing)\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing)\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing)\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing)\nT10::Float64: Time constant for third lead-lag block, validation range: (0, nothing)\nT11::Float64: Time constant for third lead-lag block, validation range: (0, nothing)\nVs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)\nVs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\nT12::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing)\nT13::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing)\nPSS_Hysteresis_param::Tuple{Float64, Float64}: PSS output hysteresis parameters (PSSOFF, PSSON)\nXcomp::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nTcomp::Float64: Time measured with compensated frequency, validation range: (eps(), nothing)\nhysteresis_binary_logic::Int: (default: 1) Hysteresis memory variable\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag, \nx_p17: 3rd lead-lag, \nx_p18: 4th lead-lag, \nx_p19: washout block for compensated frequency,\n\nn_states::Int: (Do not modify.) IEEEST has 19 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEEST has 19 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2C) -> Int64\n\n\nGet PSS2C M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2C) -> Int64\n\n\nGet PSS2C N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_PSS_Hysteresis_param-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_PSS_Hysteresis_param","text":"get_PSS_Hysteresis_param(\n value::PSS2C\n) -> Tuple{Float64, Float64}\n\n\nGet PSS2C PSS_Hysteresis_param.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2C) -> Float64\n\n\nGet PSS2C T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T10-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T10","text":"get_T10(value::PSS2C) -> Float64\n\n\nGet PSS2C T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T11-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T11","text":"get_T11(value::PSS2C) -> Float64\n\n\nGet PSS2C T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T12-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T12","text":"get_T12(value::PSS2C) -> Float64\n\n\nGet PSS2C T12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T13-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T13","text":"get_T13(value::PSS2C) -> Float64\n\n\nGet PSS2C T13.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2C) -> Float64\n\n\nGet PSS2C T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2C) -> Float64\n\n\nGet PSS2C T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2C) -> Float64\n\n\nGet PSS2C T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2C) -> Float64\n\n\nGet PSS2C T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2C) -> Float64\n\n\nGet PSS2C T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2C) -> Float64\n\n\nGet PSS2C T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2C) -> Float64\n\n\nGet PSS2C T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tcomp-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tcomp","text":"get_Tcomp(value::PSS2C) -> Float64\n\n\nGet PSS2C Tcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs1_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vs1_lim","text":"get_Vs1_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs2_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vs2_lim","text":"get_Vs2_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Xcomp-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Xcomp","text":"get_Xcomp(value::PSS2C) -> Float64\n\n\nGet PSS2C Xcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2C) -> Dict{String, Any}\n\n\nGet PSS2C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_hysteresis_binary_logic-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_hysteresis_binary_logic","text":"get_hysteresis_binary_logic(value::PSS2C) -> Int64\n\n\nGet PSS2C hysteresis_binary_logic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2C) -> Int64\n\n\nGet PSS2C input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2C) -> Int64\n\n\nGet PSS2C input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2C) -> Int64\n\n\nGet PSS2C n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2C) -> Int64\n\n\nGet PSS2C remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2C) -> Int64\n\n\nGet PSS2C remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2C) -> Vector{Symbol}\n\n\nGet PSS2C states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2C) -> Vector{StateTypes}\n\n\nGet PSS2C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2C, val) -> Any\n\n\nSet PSS2C M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2C, val) -> Any\n\n\nSet PSS2C N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_PSS_Hysteresis_param!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_PSS_Hysteresis_param!","text":"set_PSS_Hysteresis_param!(value::PSS2C, val) -> Any\n\n\nSet PSS2C PSS_Hysteresis_param.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T10!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T10!","text":"set_T10!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T11!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T11!","text":"set_T11!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T12!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T12!","text":"set_T12!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T13!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T13!","text":"set_T13!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T13.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tcomp!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tcomp!","text":"set_Tcomp!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs1_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vs1_lim!","text":"set_Vs1_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs2_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vs2_lim!","text":"set_Vs2_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Xcomp!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Xcomp!","text":"set_Xcomp!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Xcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2C, val) -> Any\n\n\nSet PSS2C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_hysteresis_binary_logic!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_hysteresis_binary_logic!","text":"set_hysteresis_binary_logic!(value::PSS2C, val) -> Any\n\n\nSet PSS2C hysteresis_binary_logic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2C, val) -> Any\n\n\nSet PSS2C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSSFixed","page":"PSS","title":"PSSFixed","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSSFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSSFixed","page":"PSS","title":"PowerSystems.PSSFixed","text":"mutable struct PSSFixed <: PSS\n V_pss::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a PSS that returns a fixed voltage to add to the reference for the AVR\n\nArguments\n\nV_pss::Float64: Fixed voltage stabilization signal in pu (DEVICE_BASE), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) PSSFixed has no states\nn_states::Int: (Do not modify.) PSSFixed has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_V_pss-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_V_pss","text":"get_V_pss(value::PSSFixed) -> Float64\n\n\nGet PSSFixed V_pss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSSFixed) -> Dict{String, Any}\n\n\nGet PSSFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSSFixed) -> Int64\n\n\nGet PSSFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSSFixed) -> Vector{Symbol}\n\n\nGet PSSFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_V_pss!-Tuple{PSSFixed, Any}","page":"PSS","title":"PowerSystems.set_V_pss!","text":"set_V_pss!(value::PSSFixed, val) -> Any\n\n\nSet PSSFixed V_pss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSSFixed, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSSFixed, val) -> Any\n\n\nSet PSSFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSSSimple","page":"PSS","title":"PSSSimple","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSSSimple.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSSSimple","page":"PSS","title":"PowerSystems.PSSSimple","text":"mutable struct PSSSimple <: PSS\n K_ω::Float64\n K_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a PSS that returns a proportional droop voltage to add to the reference for the AVR\n\nArguments\n\nK_ω::Float64: Proportional gain for frequency, validation range: (0, nothing)\nK_p::Float64: Proportional gain for active power, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) PSSSimple has no states\nn_states::Int: (Do not modify.) PSSSimple has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_K_p-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_K_p","text":"get_K_p(value::PSSSimple) -> Float64\n\n\nGet PSSSimple K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_K_ω-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_K_ω","text":"get_K_ω(value::PSSSimple) -> Float64\n\n\nGet PSSSimple K_ω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSSSimple) -> Dict{String, Any}\n\n\nGet PSSSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSSSimple) -> Int64\n\n\nGet PSSSimple n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSSSimple) -> Vector{Symbol}\n\n\nGet PSSSimple states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_K_p!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_K_ω!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_K_ω!","text":"set_K_ω!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple K_ω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#STAB1","page":"PSS","title":"STAB1","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/STAB1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.STAB1","page":"PSS","title":"PowerSystems.STAB1","text":"mutable struct STAB1 <: PSS\n KT::Float64\n T::Float64\n T1T3::Float64\n T3::Float64\n T2T4::Float64\n T4::Float64\n H_lim::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSpeed-Sensitive Stabilizing Model\n\nArguments\n\nKT::Float64: K/T for washout filter, validation range: (0, nothing)\nT::Float64: Time constant for washout filter, validation range: (0.01, nothing)\nT1T3::Float64: Time constant division T1/T3, validation range: (0, nothing)\nT3::Float64: Time constant, validation range: (0.01, nothing)\nT2T4::Float64: Time constant division T2/T4, validation range: (0, nothing)\nT4::Float64: Time constant, validation range: (0.01, nothing)\nH_lim::Float64: PSS output limit, validation range: (0, 0.5)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p1: washout filter,\nx_p2: T1/T3 lead-lag block, \nx_p3: T2/T4 lead-lag block,\n\nn_states::Int: (Do not modify.) STAB1 has 3 states\nstates_types::Vector{StateTypes}: (Do not modify.) STAB1 has 3 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_H_lim-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_H_lim","text":"get_H_lim(value::STAB1) -> Float64\n\n\nGet STAB1 H_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_KT-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_KT","text":"get_KT(value::STAB1) -> Float64\n\n\nGet STAB1 KT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T","text":"get_T(value::STAB1) -> Float64\n\n\nGet STAB1 T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1T3-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T1T3","text":"get_T1T3(value::STAB1) -> Float64\n\n\nGet STAB1 T1T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2T4-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T2T4","text":"get_T2T4(value::STAB1) -> Float64\n\n\nGet STAB1 T2T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::STAB1) -> Float64\n\n\nGet STAB1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::STAB1) -> Float64\n\n\nGet STAB1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::STAB1) -> Dict{String, Any}\n\n\nGet STAB1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::STAB1) -> Int64\n\n\nGet STAB1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::STAB1) -> Vector{Symbol}\n\n\nGet STAB1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::STAB1) -> Vector{StateTypes}\n\n\nGet STAB1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_H_lim!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_H_lim!","text":"set_H_lim!(value::STAB1, val) -> Any\n\n\nSet STAB1 H_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_KT!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_KT!","text":"set_KT!(value::STAB1, val) -> Any\n\n\nSet STAB1 KT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T!","text":"set_T!(value::STAB1, val) -> Any\n\n\nSet STAB1 T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1T3!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T1T3!","text":"set_T1T3!(value::STAB1, val) -> Any\n\n\nSet STAB1 T1T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2T4!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T2T4!","text":"set_T2T4!(value::STAB1, val) -> Any\n\n\nSet STAB1 T2T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::STAB1, val) -> Any\n\n\nSet STAB1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::STAB1, val) -> Any\n\n\nSet STAB1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::STAB1, val) -> Any\n\n\nSet STAB1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::STAB1, val) -> Any\n\n\nSet STAB1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#TwoTerminalHVDCLine","page":"TwoTerminalHVDCLine","title":"TwoTerminalHVDCLine","text":"","category":"section"},{"location":"model_library/generated_TwoTerminalHVDCLine/","page":"TwoTerminalHVDCLine","title":"TwoTerminalHVDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TwoTerminalHVDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.TwoTerminalHVDCLine","page":"TwoTerminalHVDCLine","title":"PowerSystems.TwoTerminalHVDCLine","text":"mutable struct TwoTerminalHVDCLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n active_power_limits_from::MinMax\n active_power_limits_to::MinMax\n reactive_power_limits_from::MinMax\n reactive_power_limits_to::MinMax\n loss::Union{LinearCurve, PiecewiseIncrementalCurve}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA High Voltage DC line, which must be connected to an ACBus on each end.\n\nThis model is appropriate for operational simulations with a linearized DC power flow approximation with losses proportional to the power flow. For modeling a DC network, see TModelHVDCLine\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\narc::Arc: An Arc defining this line from a bus to another bus\nactive_power_limits_from::MinMax: Minimum and maximum active power flows to the FROM node (MW)\nactive_power_limits_to::MinMax: Minimum and maximum active power flows to the TO node (MW)\nreactive_power_limits_from::MinMax: Minimum and maximum reactive power limits to the FROM node (MVAR)\nreactive_power_limits_to::MinMax: Minimum and maximum reactive power limits to the TO node (MVAR)\nloss::Union{LinearCurve, PiecewiseIncrementalCurve}: (default: LinearCurve(0.0)) Loss model coefficients. It accepts a linear model with a constant loss (MW) and a proportional loss rate (MW of loss per MW of flow). It also accepts a Piecewise loss, with N segments to specify different proportional losses for different segments.\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TwoTerminalHVDCLine/#InfrastructureSystems.get_name-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TwoTerminalHVDCLine) -> String\n\n\nGet TwoTerminalHVDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_flow-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TwoTerminalHVDCLine) -> Any\n\n\nGet TwoTerminalHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_limits_from-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_limits_from","text":"get_active_power_limits_from(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_limits_to-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_limits_to","text":"get_active_power_limits_to(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_arc-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TwoTerminalHVDCLine) -> Arc\n\n\nGet TwoTerminalHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_available-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_available","text":"get_available(value::TwoTerminalHVDCLine) -> Bool\n\n\nGet TwoTerminalHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_ext-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TwoTerminalHVDCLine) -> Dict{String, Any}\n\n\nGet TwoTerminalHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_loss-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_loss","text":"get_loss(\n value::TwoTerminalHVDCLine\n) -> Union{LinearCurve, PiecewiseIncrementalCurve}\n\n\nGet TwoTerminalHVDCLine loss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_reactive_power_limits_from-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_reactive_power_limits_from","text":"get_reactive_power_limits_from(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine reactive_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_reactive_power_limits_to-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_reactive_power_limits_to","text":"get_reactive_power_limits_to(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine reactive_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_services-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_services","text":"get_services(value::TwoTerminalHVDCLine) -> Vector{Service}\n\n\nGet TwoTerminalHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_flow!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_limits_from!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_limits_from!","text":"set_active_power_limits_from!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_limits_to!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_limits_to!","text":"set_active_power_limits_to!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_arc!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_available!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_ext!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_loss!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_loss!","text":"set_loss!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine loss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_reactive_power_limits_from!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_reactive_power_limits_from!","text":"set_reactive_power_limits_from!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine reactive_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_reactive_power_limits_to!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_reactive_power_limits_to!","text":"set_reactive_power_limits_to!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine reactive_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_services!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"api/developer_guidelines/#Developer-Guidelines","page":"Developer Guidelines","title":"Developer Guidelines","text":"","category":"section"},{"location":"api/developer_guidelines/","page":"Developer Guidelines","title":"Developer Guidelines","text":"In order to contribute to PowerSystems.jl repository please read the following sections of InfrastructureSystems.jl documentation in detail:","category":"page"},{"location":"api/developer_guidelines/","page":"Developer Guidelines","title":"Developer Guidelines","text":"Style Guide\nContributing Guidelines","category":"page"},{"location":"api/developer_guidelines/","page":"Developer Guidelines","title":"Developer Guidelines","text":"Pull requests are always welcome to fix bugs or add additional modeling capabilities.","category":"page"},{"location":"api/developer_guidelines/","page":"Developer Guidelines","title":"Developer Guidelines","text":"All the code contributions need to include tests with a minimum coverage of 70%","category":"page"},{"location":"tutorials/creating_system/#Create-and-Explore-a-Power-System","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Welcome to PowerSystems.jl!","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"In this tutorial, we will create a power system and add some components to it, including some nodes, a transmission line, load, and both renewable and fossil fuel generators. Then we will retrieve data from the system and explore the system settings.","category":"page"},{"location":"tutorials/creating_system/#Setup","page":"Create and Explore a Power System","title":"Setup","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"To get started, ensure you have followed the installation instructions.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Start Julia from the command line if you haven't already:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"$ julia","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Load the PowerSystems.jl package:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"using PowerSystems","category":"page"},{"location":"tutorials/creating_system/#Creating-a-Power-System","page":"Create and Explore a Power System","title":"Creating a Power System","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"In PowerSystems.jl, data is held in a System that holds all of the individual components along with some metadata about the power system itself.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"There are many ways to define a System, but let's start with an empty system. All we need to define is a base power of 100 MVA for per-unitization.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"sys = System(100.0)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that this system is a 60 Hz system with a base power of 100 MVA.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now, let's add some components to our system.","category":"page"},{"location":"tutorials/creating_system/#Adding-Buses","page":"Create and Explore a Power System","title":"Adding Buses","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"We'll start by creating some buses. By referring to the documentation for ACBus, notice that we need define some basic data, including the bus's unique identifier and name, base voltage, and whether it's a load, generator, or reference bus.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's start with a reference bus:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"bus1 = ACBus(;\n number = 1,\n name = \"bus1\",\n bustype = ACBusTypes.REF,\n angle = 0.0,\n magnitude = 1.0,\n voltage_limits = (min = 0.9, max = 1.05),\n base_voltage = 230.0,\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"This bus is on a 230 kV AC transmission network, with an allowable voltage range of 0.9 to 1.05 p.u. We are assuming it is currently operating at 1.0 p.u. voltage and an angle of 0 radians.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's add this bus to our System with add_component!:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"add_component!(sys, bus1)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"We can see the impact this has on the System simply by printing it:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"sys","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that System now shows a summary of components in the system.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's create a second bus:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"bus2 = ACBus(;\n number = 2,\n name = \"bus2\",\n bustype = ACBusTypes.PV,\n angle = 0.0,\n magnitude = 1.0,\n voltage_limits = (min = 0.9, max = 1.05),\n base_voltage = 230.0,\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that we've defined this bus with power and voltage variables, suitable for power flow studies.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's also add this to our System:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"add_component!(sys, bus2)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now, let's use show_components to quickly see some basic information about the buses:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"show_components(sys, ACBus)","category":"page"},{"location":"tutorials/creating_system/#Adding-a-Transmission-Line","page":"Create and Explore a Power System","title":"Adding a Transmission Line","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's connect our buses. We'll add a transmission Line between bus1 and bus2.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"warning: Warning\nWhen defining a line that isn't attached to a System yet, you must define the thermal rating of the transmission line in per-unit using the base power of the System you plan to connect it to – in this case, 100 MVA.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"line = Line(;\n name = \"line1\",\n available = true,\n active_power_flow = 0.0,\n reactive_power_flow = 0.0,\n arc = Arc(; from = bus1, to = bus2),\n r = 0.00281, # Per-unit\n x = 0.0281, # Per-unit\n b = (from = 0.00356, to = 0.00356), # Per-unit\n rating = 2.0, # Line rating of 200 MVA / System base of 100 MVA\n angle_limits = (min = -0.7, max = 0.7),\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Note that we also had to define an Arc in the process to define the connection between the two buses.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's also add this to our System:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"add_component!(sys, line)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Finally, let's check our System summary to see all the network topology components we have added are attached:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"sys","category":"page"},{"location":"tutorials/creating_system/#Adding-Loads-and-Generators","page":"Create and Explore a Power System","title":"Adding Loads and Generators","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now that our network topology is complete, we'll start adding components that inject or withdraw power from the network.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"warning: Warning\nWhen you define components that aren't attached to a System yet, you must define all fields related to power (with units such as MW, MVA, MVAR, or MW/min) in per-unit using the base_power of the component (with the exception of base_power itself, which is in MVA).","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"We'll start with defining a 10 MW load to bus1:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"load = PowerLoad(;\n name = \"load1\",\n available = true,\n bus = bus1,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n base_power = 10.0, # MVA\n max_active_power = 1.0, # 10 MW per-unitized by device base_power\n max_reactive_power = 0.0,\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that we defined the max_active_power, which is 10 MW, as 1.0 in per-unit using the base_power of 10 MVA. We've also used the bus1 component itself to define where this load is located in the network.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now add the load to the system:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"add_component!(sys, load)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Finally, we'll add two generators: one renewable and one thermal.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"We'll add a 5 MW solar power plant to bus2:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"solar = RenewableDispatch(;\n name = \"solar1\",\n available = true,\n bus = bus2,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n rating = 1.0, # 5 MW per-unitized by device base_power\n prime_mover_type = PrimeMovers.PVe,\n reactive_power_limits = (min = 0.0, max = 0.05), # 0 MVAR to 0.25 MVAR per-unitized by device base_power\n power_factor = 1.0,\n operation_cost = RenewableGenerationCost(nothing),\n base_power = 5.0, # MVA\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Note that we've used a generic renewable generator to model solar, but we can specify that it is solar through the prime mover.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Finally, we'll also add a 30 MW gas thermal generator:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"gas = ThermalStandard(;\n name = \"gas1\",\n available = true,\n status = true,\n bus = bus2,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n rating = 1.0, # 30 MW per-unitized by device base_power\n active_power_limits = (min = 0.2, max = 1.0), # 6 MW to 30 MW per-unitized by device base_power\n reactive_power_limits = nothing, # Per-unitized by device base_power\n ramp_limits = (up = 0.2, down = 0.2), # 6 MW/min up or down, per-unitized by device base_power\n operation_cost = ThermalGenerationCost(nothing),\n base_power = 30.0, # MVA\n time_limits = (up = 8.0, down = 8.0), # Hours\n must_run = false,\n prime_mover_type = PrimeMovers.CC,\n fuel = ThermalFuels.NATURAL_GAS,\n);","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"This time, let's add these components to our System using add_components! to add them both at the same time:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"add_components!(sys, [solar, gas])","category":"page"},{"location":"tutorials/creating_system/#Explore-the-System-and-its-Components","page":"Create and Explore a Power System","title":"Explore the System and its Components","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Congratulations! You have built a power system including buses, a transmission line, a load, and different types of generators. Now let's take a look around.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Remember that we can see a summary of our System using the print statement:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"sys","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now, let's double-check some of our data by retrieving it from the System. Let's use show_components again to get an overview of our renewable generators:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"show_components(sys, RenewableDispatch)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"We just have the one renewable generator named solar1. Use get_component to retrieve it by name:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"retrieved_component = get_component(RenewableDispatch, sys, \"solar1\");","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's double-check what type of renewable generator this is using a get_ function:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_prime_mover_type(retrieved_component)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Verify that this a PVe, or solar photovoltaic, generator.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's also use a get_ function to double-check where this generator is connected in the transmission network:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_bus(retrieved_component)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"See that the generator's bus is linked to the actual bus2 component in our System.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"These \"getter\" functions are available for all the data fields in a component.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"tip: Tip\nAlways use the get_* functions to retrieve the data within a component. While in Julia a user can use . to access the fields of a component, we make no guarantees on the stability of field names and locations. We do however promise to keep the getter functions stable. PowerSystems.jl also does many internal data calculations that the getter functions will properly handle for you, as you'll see below.","category":"page"},{"location":"tutorials/creating_system/#Changing-System-Per-Unit-Settings","page":"Create and Explore a Power System","title":"Changing System Per-Unit Settings","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now, let's use a getter function to look up the solar generator's rating:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_rating(retrieved_component)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"tip: Important\nWhen we defined the solar generator, we defined the rating as 1.0 per-unit with a device base_power of 5.0 MVA. Notice that the rating now reads 0.05. After we attached this component to our System, its power data is being returned to us in the System's units base.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Let's double-check the System's units base:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_units_base(sys)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"SYSTEM_BASE means all power-related (MW, MVA, MVAR, MW/min) component data in the System, except for each component's base_power, is per-unitized by the system base power for consistency.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Check the System's base_power again:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_base_power(sys)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that when we called get_rating above, the solar generator's rating, 5.0 MW, is being returned as 0.05 = (5 MVA)/(100 MVA) using the system base power.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Instead of using the System base power, let's view everything in MW or MVA – or what we call \"NATURAL_UNITS\" in PowerSystems.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Change the System's unit system:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"set_units_base_system!(sys, \"NATURAL_UNITS\")","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Now retrieve the solar generator's rating again:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_rating(retrieved_component)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Notice that the value is now its \"natural\" value, 5.0 MVA.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Finally, let's change the System's unit system to the final option, \"DEVICE_BASE\":","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"set_units_base_system!(sys, \"DEVICE_BASE\")","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"And retrieve the solar generator's rating once more:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"get_rating(retrieved_component)","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"See that now the data is now 1.0 (5.0 MVA per-unitized by the generator (i.e., the device's) base_power of 5.0 MVA), which is the format we used to originally define the device.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Recall that if you ever need to check a System's settings, including the unit system being used by all the getter functions, you can always just print the System:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"sys","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"See the units base is printed as one of the System properties.","category":"page"},{"location":"tutorials/creating_system/#Next-Steps","page":"Create and Explore a Power System","title":"Next Steps","text":"","category":"section"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"In this tutorial, you manually created a power System, added and then retrieved its components, and modified the System per-unit settings.","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Next, you might want to:","category":"page"},{"location":"tutorials/creating_system/","page":"Create and Explore a Power System","title":"Create and Explore a Power System","text":"Add time series data to components in the System\nAdd necessary data for dynamic simulations\nImport a System from an existing Matpower or PSSE file or with PSSE dynamic data instead of creating it manually\nCreate your own System from .csv files instead of creating it manually\nRead more to understand per-unitization in PowerSystems.jl\nSee a workaround for how to Add a Component in Natural Units","category":"page"},{"location":"model_library/generated_LoadZone/#LoadZone","page":"LoadZone","title":"LoadZone","text":"","category":"section"},{"location":"model_library/generated_LoadZone/","page":"LoadZone","title":"LoadZone","text":"Modules = [PowerSystems]\nPages = [\"generated/LoadZone.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_LoadZone/#PowerSystems.LoadZone","page":"LoadZone","title":"PowerSystems.LoadZone","text":"mutable struct LoadZone <: AggregationTopology\n name::String\n peak_active_power::Float64\n peak_reactive_power::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA load zone for electricity price analysis.\n\nThe load zone can be specified when defining each ACBus or DCBus in the zone\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\npeak_active_power::Float64: Peak active power in the zone (MW)\npeak_reactive_power::Float64: Peak reactive power in the zone (MVAR)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_LoadZone/#InfrastructureSystems.get_name-Tuple{LoadZone}","page":"LoadZone","title":"InfrastructureSystems.get_name","text":"get_name(value::LoadZone) -> String\n\n\nGet LoadZone name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.get_ext-Tuple{LoadZone}","page":"LoadZone","title":"PowerSystems.get_ext","text":"get_ext(value::LoadZone) -> Dict{String, Any}\n\n\nGet LoadZone ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.get_peak_active_power-Tuple{LoadZone}","page":"LoadZone","title":"PowerSystems.get_peak_active_power","text":"get_peak_active_power(value::LoadZone) -> Any\n\n\nGet LoadZone peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.get_peak_reactive_power-Tuple{LoadZone}","page":"LoadZone","title":"PowerSystems.get_peak_reactive_power","text":"get_peak_reactive_power(value::LoadZone) -> Any\n\n\nGet LoadZone peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_ext!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_ext!","text":"set_ext!(value::LoadZone, val) -> Any\n\n\nSet LoadZone ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_peak_active_power!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_peak_active_power!","text":"set_peak_active_power!(value::LoadZone, val) -> Any\n\n\nSet LoadZone peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_peak_reactive_power!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_peak_reactive_power!","text":"set_peak_reactive_power!(value::LoadZone, val) -> Any\n\n\nSet LoadZone peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"how_to/add_cost_curve/#cost_how_to","page":"...add an Operating Cost","title":"Adding an Operating Cost","text":"","category":"section"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"This how-to guide covers the steps to select and add an operating cost to a component, such as a generator, load, or energy storage system.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"using PowerSystems #hide","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"To begin, the user must make 2 or 3 decisions before defining the operating cost:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Select an appropriate OperationalCost from the OperationalCost options. In general, each operating cost has parameters to define fixed and variable costs. To be able to define an OperationalCost, you must first select a curve to represent the variable cost(s).\nIf you selected ThermalGenerationCost or HydroGenerationCost, select either a FuelCurve or CostCurve to represent the variable cost, based on the units of the generator's data.\nIf you have data in terms of heat rate or water flow, use FuelCurve.\nIf you have data in units of currency, such as $/MWh, use CostCurve. If you selected another OperationalCost type, the variable cost is represented as a CostCurve.\nSelect a ValueCurve to represent the variable cost data by comparing the format of your variable cost data to the Variable Cost Representations table and the ValueCurve options.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Then, the user defines the cost by working backwards:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Define the variable cost's ValueCurve\nUse the ValueCurve to define the selected CostCurve or FuelCurve\nUse the CostCurve or FuelCurve to define the OperationalCost","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Let's look at a few examples.","category":"page"},{"location":"how_to/add_cost_curve/#Example-1:-A-Renewable-Generator","page":"...add an Operating Cost","title":"Example 1: A Renewable Generator","text":"","category":"section"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"We have a renewable unit that produces at $22/MWh.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Following the decision steps above:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"We select RenewableGenerationCost to represent this renewable generator.\nWe select a LinearCurve to represent the $22/MWh variable cost.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Following the implementation steps, we define RenewableGenerationCost by nesting the definitions:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"RenewableGenerationCost(; variable = CostCurve(; value_curve = LinearCurve(22.0)))","category":"page"},{"location":"how_to/add_cost_curve/#Example-2:-A-Thermal-Generator","page":"...add an Operating Cost","title":"Example 2: A Thermal Generator","text":"","category":"section"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"We have a thermal generating unit that has a heat rate of 7 GJ/MWh at 100 MW and 9 GJ/MWh at 200 MW, plus a fixed cost of $6.0/hr, a start-up cost of $2000, and a shut-down cost of $1000. Its fuel cost is $20/GJ.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Following the decision steps above:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"We select ThermalGenerationCost to represent this thermal generator.\nWe select FuelCurve because we have consumption in units of fuel (GJ/MWh) instead of currency.\nWe select a PiecewisePointCurve to represent the piecewise linear heat rate curve.","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"This time, we'll define each step individually, beginning with the heat rate curve:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"heat_rate_curve = PiecewisePointCurve([(100.0, 7.0), (200.0, 9.0)])","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Use the heat rate to define the fuel curve, including the cost of fuel:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"fuel_curve = FuelCurve(; value_curve = heat_rate_curve, fuel_cost = 20.0)","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"Finally, define the full operating cost:","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"cost = ThermalGenerationCost(;\n variable = fuel_curve,\n fixed = 6.0,\n start_up = 2000.0,\n shut_down = 1000.0,\n)","category":"page"},{"location":"how_to/add_cost_curve/","page":"...add an Operating Cost","title":"...add an Operating Cost","text":"This OperationalCost can be used when defining a component or added to an existing component using set_operation_cost!.","category":"page"},{"location":"model_library/dynamic_branch/#Dynamic-Branch","page":"Dynamic Lines","title":"Dynamic Branch","text":"","category":"section"},{"location":"model_library/dynamic_branch/","page":"Dynamic Lines","title":"Dynamic Lines","text":"Modules = [PowerSystems]\nPages = [\"models/dynamic_branch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/dynamic_branch/#PowerSystems.DynamicBranch","page":"Dynamic Lines","title":"PowerSystems.DynamicBranch","text":"Extends the branch type to add the information required for dynamic modeling of branches. Includes the fields for the states and the number of states\n\nArguments\n\nbranch::ACBranch\n\n\n\n\n\n","category":"type"},{"location":"model_library/dynamic_branch/#PowerSystems.get_active_power_flow-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::DynamicBranch)\n\n\nGet DynamicBranch activepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_angle_limits-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::DynamicBranch\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet DynamicBranch angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_arc-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_arc","text":"get_arc(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_available-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_available","text":"get_available(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_b-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_b","text":"get_b(\n value::DynamicBranch\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet DynamicBranch b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_ext-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_ext","text":"get_ext(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_n_states-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_n_states","text":"get_n_states(value::DynamicBranch) -> Int64\n\n\nGet n_states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_r-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_r","text":"get_r(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_rating-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_rating","text":"get_rating(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_reactive_power_flow-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::DynamicBranch)\n\n\nGet DynamicBranch reactivepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_services-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_services","text":"get_services(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_states-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_states","text":"get_states(value::DynamicBranch) -> Vector{Symbol}\n\n\nGet states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_x-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_x","text":"get_x(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_active_power_flow!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::DynamicBranch,\n val::Float64\n) -> Any\n\n\nSet DynamicBranch activepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_angle_limits!-Tuple{DynamicBranch, @NamedTuple{min::Float64, max::Float64}}","page":"Dynamic Lines","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(\n value::DynamicBranch,\n val::@NamedTuple{min::Float64, max::Float64}\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nSet DynamicBranch angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_arc!-Tuple{DynamicBranch, Arc}","page":"Dynamic Lines","title":"PowerSystems.set_arc!","text":"set_arc!(value::DynamicBranch, val::Arc) -> Any\n\n\nSet DynamicBranch arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_available!-Tuple{DynamicBranch, Bool}","page":"Dynamic Lines","title":"PowerSystems.set_available!","text":"set_available!(value::DynamicBranch, val::Bool) -> Any\n\n\nSet DynamicBranch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_b!-Tuple{DynamicBranch, Any}","page":"Dynamic Lines","title":"PowerSystems.set_b!","text":"set_b!(value::DynamicBranch, val) -> Any\n\n\nSet DynamicBranch b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_ext!-Tuple{DynamicBranch, Dict{String, Any}}","page":"Dynamic Lines","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::DynamicBranch,\n val::Dict{String, Any}\n) -> Any\n\n\nSet DynamicBranch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_n_states!-Tuple{DynamicBranch, Int64}","page":"Dynamic Lines","title":"PowerSystems.set_n_states!","text":"set_n_states!(value::DynamicBranch, val::Int64) -> Int64\n\n\nSet n_states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_r!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_r!","text":"set_r!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_rating!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_rating!","text":"set_rating!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_reactive_power_flow!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(\n value::DynamicBranch,\n val::Float64\n) -> Any\n\n\nSet DynamicBranch reactivepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_services!-Tuple{DynamicBranch, Vector{Service}}","page":"Dynamic Lines","title":"PowerSystems.set_services!","text":"set_services!(\n value::DynamicBranch,\n val::Vector{Service}\n) -> Any\n\n\nSet DynamicBranch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_states!-Tuple{DynamicBranch, Vector{Symbol}}","page":"Dynamic Lines","title":"PowerSystems.set_states!","text":"set_states!(\n value::DynamicBranch,\n val::Vector{Symbol}\n) -> Vector{Symbol}\n\n\nSet states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_x!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_x!","text":"set_x!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch x.\n\n\n\n\n\n","category":"method"},{"location":"how_to/reduce_repl_printing/#Reduce-REPL-printing","page":"...reduce REPL printing","title":"Reduce REPL printing","text":"","category":"section"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"By default PowerSystems.jl outputs to the REPL all Logging statements, which can be overwhelming in some cases.","category":"page"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"Use configure_logging to create a logger with your preferences for which logging statements should be printed to the console or a log file:","category":"page"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"Example: Set log output to only see error messages in the console","category":"page"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"using PowerSystems\nusing Logging\nconfigure_logging(; console_level = Logging.Error)","category":"page"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.","category":"page"},{"location":"how_to/reduce_repl_printing/","page":"...reduce REPL printing","title":"...reduce REPL printing","text":"Refer to this page for more logging configuration options. Note that it describes how to enable debug logging for some log messages but not others.","category":"page"},{"location":"how_to/improve_ts_performance/#Improve-Performance-with-Time-Series-Data","page":"...improve performance with time series data","title":"Improve Performance with Time Series Data","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"Use the steps here to improve performance with small or large data sets, but particularly large data sets. These improvements can help handle adding large numbers of data sets or reduce overhead when accessing time series data multiple times.","category":"page"},{"location":"how_to/improve_ts_performance/#Choosing-the-Storage-Location","page":"...improve performance with time series data","title":"Choosing the Storage Location","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"By default, time series data is stored in an HDF5 file in the tmp file system to prevent large datasets from overwhelming system memory. However, you can change its location.","category":"page"},{"location":"how_to/improve_ts_performance/#Small-data-sets","page":"...improve performance with time series data","title":"Small data sets","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"If your dataset will fit in your computer's memory, then you can increase performance by storing it in memory:","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"sys = System(100.0; time_series_in_memory = true)","category":"page"},{"location":"how_to/improve_ts_performance/#Large-data-sets","page":"...improve performance with time series data","title":"Large data sets","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"If the system's time series data will be larger than the amount of tmp space available, use the time_series_directory parameter to change its location.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"sys = System(100.0; time_series_directory = \"bigger_directory\")","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"You can also override the location by setting the environment variable SIENNA_TIME_SERIES_DIRECTORY to another directory.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"HDF5 compression is not enabled by default, but you can enable it with enable_compression to get significant storage savings at the cost of CPU time. CompressionSettings can be used to customize the HDF5 compression.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"sys = System(100.0; enable_compression = true)\nsys = System(\n 100.0;\n compression = CompressionSettings(;\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true,\n ),\n)","category":"page"},{"location":"how_to/improve_ts_performance/#Adding-Timeseries-To-The-System","page":"...improve performance with time series data","title":"Adding Timeseries To The System","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"In order to optimize the storage of time series data, time series can be shared across devices to avoid duplication. If the same forecast applies to multiple components then can call add_time_series!, passing the collection of components that share the time series data. Time series data can also be shared on a component level. Suppose a time series array applies to both the max_active_power and max_reactive_power attributes of a generator. You can share the data.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"resolution = Dates.Hour(1)\ndata = Dict(\n DateTime(\"2020-01-01T00:00:00\") => ones(24),\n DateTime(\"2020-01-01T01:00:00\") => ones(24),\n)\n# Define a Deterministic for the first attribute\nforecast_max_active_power = Deterministic(\n \"max_active_power\",\n data,\n resolution;\n scaling_factor_multiplier = get_max_active_power,\n)\nadd_time_series!(sys, generator, forecast_max_active_power)\n# Reuse time series for second attribute\nforecast_max_reactive_power = Deterministic(\n forecast_max_active_power,\n \"max_reactive_power\";\n scaling_factor_multiplier = get_max_reactive_power,\n)\nadd_time_series!(sys, generator, forecast_max_reactive_power)","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"By default, the call to add_time_series! will open the HDF5 file, write the data to the file, and close the file. It will also add a row to an SQLite database. These operations have overhead. If you will add thousands of time series arrays, consider using bulk_add_time_series!. All arrays will be written with one file handle. The bulk SQLite operations are much more efficient. As a fallback option, use open_time_series_store! if timeseries must be added one at a time.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"# Assumes `read_time_series` will return data appropriate for Deterministic forecasts\n# based on the generator name and the filenames match the component and time series names.\nresolution = Dates.Hour(1)\nassociations = (\n IS.TimeSeriesAssociation(\n gen,\n Deterministic(;\n data = read_time_series(get_name(gen) * \".csv\"),\n name = \"get_max_active_power\",\n resolution = resolution),\n )\n for gen in get_components(ThermalStandard, sys)\n)\nbulk_add_time_series!(sys, associations)","category":"page"},{"location":"how_to/improve_ts_performance/#Using-Forecast-Caches-for-Simulations","page":"...improve performance with time series data","title":"Using Forecast Caches for Simulations","text":"","category":"section"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"Each retrieval of a forecast window from the HDF5 file will involve a small disk read. In the case of production cost modeling or other analyses that access forecast windows repeatedly, this can slow down processes significantly, especially if the underlying storage uses spinning disks.","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"PowerSystems provides an alternate interface – the forecast cache – that pre-fetches data into the system memory with large reads in order to mitigate this potential problem. It is highly recommended that you use this interface for modeling implementations. This is particularly relevant for models using large datasets. For example:","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"cache = ForecastCache(Deterministic, component, \"max_active_power\")\nwindow1 = get_next_time_series_array!(cache)\nwindow2 = get_next_time_series_array!(cache)\n# or\nfor window in cache\n @show window\nend","category":"page"},{"location":"how_to/improve_ts_performance/","page":"...improve performance with time series data","title":"...improve performance with time series data","text":"Each iteration of on the cache object will deliver the next forecast window (see get_next_time_series_array!).","category":"page"},{"location":"how_to/parse_ts_from_csvs/#parsing_time_series","page":"...parse time series data from .csv files","title":"Parse Time Series Data from .csv's","text":"","category":"section"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"This example shows how to parse time series data from .csv files to add to a System. For example, a System created by parsing a MATPOWER file doesn't contain any time series data, so a user may want to add time series to be able to run a production cost model.","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"using PowerSystems\nusing JSON3\n\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide\nsys = System(joinpath(file_dir, \"case5_re.m\"));","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"Let's use a predefined 5-bus System with some renewable generators and loads that we want to add time-series data to:","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"sys","category":"page"},{"location":"how_to/parse_ts_from_csvs/#Define-pointers-to-time-series-files","page":"...parse time series data from .csv files","title":"Define pointers to time series files","text":"","category":"section"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"PowerSystems requires a metadata file that maps components to their time series data in order to be able to automatically construct time_series from .csv data files.","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"For example, if we want to add a bunch of time series files, say one for each load and one for each renewable generator, we need to define pointers to each time series .csv file with the following fields:","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"simulation: User description of simulation\nresolution: Resolution of time series in seconds\nmodule: Module that defines the abstract type of the component\ncategory: Type of component. Must map to abstract types defined by the \"module\" entry (Bus, ElectricLoad, Generator, LoadZone, Reserve)\ncomponent_name: Name of component\nname: User-defined name for the time series data.\nnormalization_factor: Controls normalization of the data. Use 1.0 for pre-normalized data. Use 'Max' to divide the time series by the max value in the column. Use any float for a custom scaling factor.\nscaling_factor_multiplier_module: Module that defines the accessor function for the scaling factor\nscaling_factor_multiplier: Accessor function of the scaling factor\ndata_file: Path to the time series data file","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"Notes:","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"The module, category, and component_name entries must be valid arguments to retrieve a component using get_component(${module}.${category}, sys, $name).\nThe scaling_factor_multiplier_module and the scaling_factor_multiplier entries must be sufficient to return the scaling factor data using ${scaling_factor_multiplier_module}.${scaling_factor_multiplier}(component).","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"PowerSystems supports this metadata in either CSV or JSON formats.","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"In this example, we will use the JSON format. The example file can be found here, and this is what its pointers look like in the required format:","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"using PowerSystemCaseBuilder #hide\nDATA_DIR = PowerSystemCaseBuilder.DATA_DIR #hide\nFORECASTS_DIR = joinpath(DATA_DIR, \"5-Bus\", \"5bus_ts\"); #hide\nfname = joinpath(FORECASTS_DIR, \"timeseries_pointers_da.json\"); # hide\nopen(fname, \"r\") do f # hide\n JSON3.@pretty JSON3.read(f) # hide\nend #hide","category":"page"},{"location":"how_to/parse_ts_from_csvs/#Read-and-assign-time-series-to-System-using-these-parameters.","page":"...parse time series data from .csv files","title":"Read and assign time series to System using these parameters.","text":"","category":"section"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"fname = joinpath(FORECASTS_DIR, \"timeseries_pointers_da.json\")\nadd_time_series!(sys, fname)","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"You can print the System to see a new table summarizing the time series data that has been added:","category":"page"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"sys","category":"page"},{"location":"how_to/parse_ts_from_csvs/#See-also:","page":"...parse time series data from .csv files","title":"See also:","text":"","category":"section"},{"location":"how_to/parse_ts_from_csvs/","page":"...parse time series data from .csv files","title":"...parse time series data from .csv files","text":"Improve Performance with Time Series Data\nParsing Matpower or PSS/e RAW Files\nParsing PSS/e DYR Files\nParsing table data (CSV Files)","category":"page"},{"location":"api/citation/#Citation","page":"Citation","title":"Citation","text":"","category":"section"},{"location":"api/citation/","page":"Citation","title":"Citation","text":"Users are requested to please cite the following paper:","category":"page"},{"location":"api/citation/","page":"Citation","title":"Citation","text":"@article{LARA2021100747,\ntitle = {PowerSystems.jl — A power system data management package for large scale modeling},\njournal = {SoftwareX},\nvolume = {15},\npages = {100747},\nyear = {2021},\nissn = {2352-7110},\ndoi = {https://doi.org/10.1016/j.softx.2021.100747},\nurl = {https://www.sciencedirect.com/science/article/pii/S2352711021000765},\nauthor = {José Daniel Lara and Clayton Barrows and Daniel Thom and Dheepak Krishnamurthy and Duncan Callaway},\nkeywords = {Power Systems, Julia, Energy},","category":"page"},{"location":"api/citation/","page":"Citation","title":"Citation","text":"PowerSystems has been developed as part of the Sienna platform by the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).","category":"page"},{"location":"model_library/generated_AreaInterchange/#AreaInterchange","page":"AreaInterchange","title":"AreaInterchange","text":"","category":"section"},{"location":"model_library/generated_AreaInterchange/","page":"AreaInterchange","title":"AreaInterchange","text":"Modules = [PowerSystems]\nPages = [\"generated/AreaInterchange.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.AreaInterchange","page":"AreaInterchange","title":"PowerSystems.AreaInterchange","text":"mutable struct AreaInterchange <: Branch\n name::String\n available::Bool\n active_power_flow::Float64\n from_area::Area\n to_area::Area\n flow_limits::FromTo_ToFrom\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nFlow exchanged between Areas. This Interchange is agnostic to the lines connecting the areas. It does not substitute Interface which is the total flow across a group of lines\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\nfrom_area::Area: Area from which the power is extracted\nto_area::Area: Area to which the power is injected\nflow_limits::FromTo_ToFrom: Max flow between the areas. It ignores lines and other branches totals\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AreaInterchange/#InfrastructureSystems.get_name-Tuple{AreaInterchange}","page":"AreaInterchange","title":"InfrastructureSystems.get_name","text":"get_name(value::AreaInterchange) -> String\n\n\nGet AreaInterchange name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_active_power_flow-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::AreaInterchange) -> Any\n\n\nGet AreaInterchange active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_available-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_available","text":"get_available(value::AreaInterchange) -> Bool\n\n\nGet AreaInterchange available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_ext-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_ext","text":"get_ext(value::AreaInterchange) -> Dict{String, Any}\n\n\nGet AreaInterchange ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_flow_limits-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_flow_limits","text":"get_flow_limits(\n value::AreaInterchange\n) -> NamedTuple{(:from_to, :to_from), <:Tuple{Any, Any}}\n\n\nGet AreaInterchange flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_from_area-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_from_area","text":"get_from_area(value::AreaInterchange) -> Area\n\n\nGet AreaInterchange from_area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.get_to_area-Tuple{AreaInterchange}","page":"AreaInterchange","title":"PowerSystems.get_to_area","text":"get_to_area(value::AreaInterchange) -> Area\n\n\nGet AreaInterchange to_area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_active_power_flow!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_available!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_available!","text":"set_available!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_ext!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_ext!","text":"set_ext!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_flow_limits!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_flow_limits!","text":"set_flow_limits!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_from_area!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_from_area!","text":"set_from_area!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange from_area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AreaInterchange/#PowerSystems.set_to_area!-Tuple{AreaInterchange, Any}","page":"AreaInterchange","title":"PowerSystems.set_to_area!","text":"set_to_area!(value::AreaInterchange, val) -> Any\n\n\nSet AreaInterchange to_area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TurbineGov","page":"TurbineGov","title":"TurbineGov","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/#DEGOV","page":"TurbineGov","title":"DEGOV","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/DEGOV.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.DEGOV","page":"TurbineGov","title":"PowerSystems.DEGOV","text":"mutable struct DEGOV <: TurbineGov\n T1::Float64\n T2::Float64\n T3::Float64\n K::Float64\n T4::Float64\n T5::Float64\n T6::Float64\n Td::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters Woodward Diesel Governor Model. DEGOV in PowerWorld\n\nArguments\n\nT1::Float64: Governor mechanism time constant, validation range: (eps(), 100)\nT2::Float64: Turbine power time constant, validation range: (eps(), 100)\nT3::Float64: Turbine exhaust temperature time constant, validation range: (eps(), 100)\nK::Float64: Governor gain (reciprocal of droop), validation range: (eps(), 100)\nT4::Float64: Governor lead time constant, validation range: (eps(), 100)\nT5::Float64: Governor lag time constant, validation range: (eps(), 100)\nT6::Float64: Actuator time constant, validation range: (eps(), 100)\nTd::Float64: Engine time delay, validation range: (eps(), 100)\nP_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the DEGOV model are:\n\nx_ecb1: Electric control box 1,\nx_ecb2: Electric control box 2,\nx_a1: Actuator 1,\nx_a2: Actuator 2,\nx_a3: Actuator 3,\n\nn_states::Int: (Do not modify.) DEGOV has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) DEGOV has 5 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_K","text":"get_K(value::DEGOV) -> Float64\n\n\nGet DEGOV K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::DEGOV) -> Float64\n\n\nGet DEGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::DEGOV) -> Float64\n\n\nGet DEGOV T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::DEGOV) -> Float64\n\n\nGet DEGOV T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::DEGOV) -> Float64\n\n\nGet DEGOV T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::DEGOV) -> Float64\n\n\nGet DEGOV T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::DEGOV) -> Float64\n\n\nGet DEGOV T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T6-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T6","text":"get_T6(value::DEGOV) -> Float64\n\n\nGet DEGOV T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Td-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_Td","text":"get_Td(value::DEGOV) -> Float64\n\n\nGet DEGOV Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::DEGOV) -> Dict{String, Any}\n\n\nGet DEGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::DEGOV) -> Int64\n\n\nGet DEGOV n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::DEGOV) -> Vector{Symbol}\n\n\nGet DEGOV states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::DEGOV) -> Vector{StateTypes}\n\n\nGet DEGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_K!","text":"set_K!(value::DEGOV, val) -> Any\n\n\nSet DEGOV K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::DEGOV, val) -> Any\n\n\nSet DEGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T6!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T6!","text":"set_T6!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Td!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Td!","text":"set_Td!(value::DEGOV, val) -> Any\n\n\nSet DEGOV Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::DEGOV, val) -> Any\n\n\nSet DEGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::DEGOV, val) -> Any\n\n\nSet DEGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#DEGOV1","page":"TurbineGov","title":"DEGOV1","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/DEGOV1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.DEGOV1","page":"TurbineGov","title":"PowerSystems.DEGOV1","text":"mutable struct DEGOV1 <: TurbineGov\n droop_flag::Int\n T1::Float64\n T2::Float64\n T3::Float64\n K::Float64\n T4::Float64\n T5::Float64\n T6::Float64\n Td::Float64\n T_lim::Tuple{Float64, Float64}\n R::Float64\n Te::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters Woodward Diesel Governor Model. DEGOV1 in PSSE\n\nArguments\n\ndroop_flag::Int: Droop control Flag. 0 for throttle feedback and 1 for electric power feedback, validation range: (0, 1)\nT1::Float64: Governor mechanism time constant in s, validation range: (0, 100)\nT2::Float64: Turbine power time constant in s, validation range: (0, 100)\nT3::Float64: Turbine exhaust temperature time constant in s, validation range: (0, 100)\nK::Float64: Governor gain for actuator, validation range: (0, 100)\nT4::Float64: Governor lead time constant in s, validation range: (0, 100)\nT5::Float64: Governor lag time constant in s, validation range: (0, 100)\nT6::Float64: Actuator time constant in s, validation range: (0, 100)\nTd::Float64: Engine time delay in s, validation range: (0, 100)\nT_lim::Tuple{Float64, Float64}: Operational control limits on actuator (Tmin, Tmax)\nR::Float64: Steady state droop parameter, validation range: (0, 100)\nTe::Float64: Power transducer time constant in s, validation range: (0, 100)\nP_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the DEGOV1 model depends on the droop flag\nn_states::Int: (Do not modify.) The number of states of the DEGOV1 model depends on the droop flag\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_K","text":"get_K(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T6-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T6","text":"get_T6(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_lim-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_T_lim","text":"get_T_lim(value::DEGOV1) -> Tuple{Float64, Float64}\n\n\nGet DEGOV1 T_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Td-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_Td","text":"get_Td(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Te-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_Te","text":"get_Te(value::DEGOV1) -> Float64\n\n\nGet DEGOV1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_droop_flag-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_droop_flag","text":"get_droop_flag(value::DEGOV1) -> Int64\n\n\nGet DEGOV1 droop_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::DEGOV1) -> Dict{String, Any}\n\n\nGet DEGOV1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::DEGOV1) -> Int64\n\n\nGet DEGOV1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{DEGOV1}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::DEGOV1) -> Vector{Symbol}\n\n\nGet DEGOV1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_K!","text":"set_K!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T6!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T6!","text":"set_T6!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_lim!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_T_lim!","text":"set_T_lim!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 T_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Td!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_Td!","text":"set_Td!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Te!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_Te!","text":"set_Te!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_droop_flag!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_droop_flag!","text":"set_droop_flag!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 droop_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{DEGOV1, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::DEGOV1, val) -> Any\n\n\nSet DEGOV1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#GasTG","page":"TurbineGov","title":"GasTG","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/GasTG.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.GasTG","page":"TurbineGov","title":"PowerSystems.GasTG","text":"mutable struct GasTG <: TurbineGov\n R::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n AT::Float64\n Kt::Float64\n V_lim::Tuple{Float64, Float64}\n D_turb::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of Gas Turbine-Governor. GAST in PSSE and GAST_PTI in PowerWorld\n\nArguments\n\nR::Float64: Speed droop parameter, validation range: (eps(), 0.1)\nT1::Float64: Governor time constant in s, validation range: (eps(), 0.5)\nT2::Float64: Combustion chamber time constant, validation range: (eps(), 0.5)\nT3::Float64: Load limit time constant (exhaust gas measurement time), validation range: (eps(), 5)\nAT::Float64: Ambient temperature load limit, validation range: (0, 1)\nKt::Float64: Load limit feedback gain, validation range: (0, 5)\nV_lim::Tuple{Float64, Float64}: Operational control limits on fuel valve opening (Vmin, Vmax)\nD_turb::Float64: Speed damping coefficient of gas turbine rotor, validation range: (0, 0.5)\nP_ref::Float64: (default: 1.0) Reference Load Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the GAST model are:\n\nx_g1: Fuel valve opening,\nx_g2: Fuel flow,\nx_g3: Exhaust temperature load\n\nn_states::Int: (Do not modify.) GasTG has 3 states\nstates_types::Vector{StateTypes}: (Do not modify.) GAST has 3 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_AT-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_AT","text":"get_AT(value::GasTG) -> Float64\n\n\nGet GasTG AT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_turb-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_D_turb","text":"get_D_turb(value::GasTG) -> Float64\n\n\nGet GasTG D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kt-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_Kt","text":"get_Kt(value::GasTG) -> Float64\n\n\nGet GasTG Kt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::GasTG) -> Float64\n\n\nGet GasTG P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::GasTG) -> Float64\n\n\nGet GasTG R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::GasTG) -> Float64\n\n\nGet GasTG T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::GasTG) -> Float64\n\n\nGet GasTG T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::GasTG) -> Float64\n\n\nGet GasTG T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_V_lim-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_V_lim","text":"get_V_lim(value::GasTG) -> Tuple{Float64, Float64}\n\n\nGet GasTG V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::GasTG) -> Dict{String, Any}\n\n\nGet GasTG ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::GasTG) -> Int64\n\n\nGet GasTG n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::GasTG) -> Vector{Symbol}\n\n\nGet GasTG states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::GasTG) -> Vector{StateTypes}\n\n\nGet GasTG states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_AT!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_AT!","text":"set_AT!(value::GasTG, val) -> Any\n\n\nSet GasTG AT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_turb!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_D_turb!","text":"set_D_turb!(value::GasTG, val) -> Any\n\n\nSet GasTG D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kt!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_Kt!","text":"set_Kt!(value::GasTG, val) -> Any\n\n\nSet GasTG Kt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::GasTG, val) -> Any\n\n\nSet GasTG P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::GasTG, val) -> Any\n\n\nSet GasTG R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::GasTG, val) -> Any\n\n\nSet GasTG T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::GasTG, val) -> Any\n\n\nSet GasTG T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::GasTG, val) -> Any\n\n\nSet GasTG T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_V_lim!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::GasTG, val) -> Any\n\n\nSet GasTG V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::GasTG, val) -> Any\n\n\nSet GasTG ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::GasTG, val) -> Any\n\n\nSet GasTG states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#GeneralGovModel","page":"TurbineGov","title":"GeneralGovModel","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/GeneralGovModel.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.GeneralGovModel","page":"TurbineGov","title":"PowerSystems.GeneralGovModel","text":"mutable struct GeneralGovModel <: TurbineGov\n Rselect::Int\n fuel_flag::Int\n R::Float64\n Tpelec::Float64\n speed_error_signal::MinMax\n Kp_gov::Float64\n Ki_gov::Float64\n Kd_gov::Float64\n Td_gov::Float64\n valve_position_limits::MinMax\n T_act::Float64\n K_turb::Float64\n Wf_nl::Float64\n Tb::Float64\n Tc::Float64\n T_eng::Float64\n Tf_load::Float64\n Kp_load::Float64\n Ki_load::Float64\n Ld_ref::Float64\n Dm::Float64\n R_open::Float64\n R_close::Float64\n Ki_mw::Float64\n A_set::Float64\n Ka::Float64\n Ta::Float64\n T_rate::Float64\n db::Float64\n Tsa::Float64\n Tsb::Float64\n R_lim::UpDown\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nGE General Governor/Turbine Model. The GeneralGovModel (GGOV1) model is a general purpose governor model used for a variety of prime movers controlled by proportional-integral-derivative (PID) governors including gas turbines\n\nArguments\n\nRselect::Int: Feedback signal for governor droop, validation range: (-2, 1)\nfuel_flag::Int: Flag Switch for fuel source characteristic, validation range: (0, 1)\nR::Float64: Speed droop parameter, validation range: (eps(), nothing)\nTpelec::Float64: Electrical power transducer time constant, seconds, validation range: (eps(), nothing)\nspeed_error_signal::MinMax: Speed error signal limits\nKp_gov::Float64: Governor proportional gain, validation range: (0, nothing)\nKi_gov::Float64: Governor integral gain, validation range: (0, nothing)\nKd_gov::Float64: Governor derivative gain, validation range: (0, nothing)\nTd_gov::Float64: Governor derivative time constant, validation range: (0, nothing)\nvalve_position_limits::MinMax: Valve position limits\nT_act::Float64: Actuator time constant, validation range: (0, nothing)\nK_turb::Float64: Turbine gain, validation range: (0, nothing)\nWf_nl::Float64: No load fuel flow, pu, validation range: (0, nothing)\nTb::Float64: Turbine lag time constant, sec, validation range: (0, nothing)\nTc::Float64: Turbine lead time constant, sec, validation range: (0, nothing)\nT_eng::Float64: Transport lag time constant for diesel engine, sec, validation range: (0, nothing)\nTf_load::Float64: Load limiter time constant, validation range: (0, nothing)\nKp_load::Float64: Load limiter proportional gain for PI controller, validation range: (0, nothing)\nKi_load::Float64: Load integral gain for PI controller, validation range: (0, nothing)\nLd_ref::Float64: Load limiter integral gain for PI controller, validation range: (0, nothing)\nDm::Float64: Mechanical damping coefficient, pu, validation range: (0, nothing)\nR_open::Float64: Maximum valve opening rate, pu/sec, validation range: (0, nothing)\nR_close::Float64: Maximum valve closing rate, pu/sec, validation range: (0, nothing)\nKi_mw::Float64: Power controller (reset) gain, validation range: (0, nothing)\nA_set::Float64: Acceleration limiter setpoint, pu/sec, validation range: (0, nothing)\nKa::Float64: Acceleration limiter gain, validation range: (0, nothing)\nTa::Float64: Acceleration limiter time constant , validation range: (eps(), nothing)\nT_rate::Float64: Turbine rating, validation range: (0, nothing)\ndb::Float64: Speed governor deadband, validation range: (0, nothing)\nTsa::Float64: Temperature detection lead time constant, validation range: (0, nothing)\nTsb::Float64: Temperature detection lag time constant, validation range: (0, nothing)\nR_lim::UpDown: Maximum rate of load increase\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the GGOV1 model are:\n\nPe: Machine Electrical Power Measurement,\nx_g1: Governor differential control,\nx_g2: Governor integral control, \nx_g3: Turbine actuator, \nx_g4: Turbine Lead-Lag, \nx_g5: Turbine load limiter measurement, \nx_g6: Turbine Load Limiter Integral Control, \nx_g7: Supervisory Load Control, \nx_g8: Acceleration Control, \nx_g9 Temperature Detection Lead - Lag:\n\nn_states::Int: (Do not modify.) GeneralGovModel has 10 states\nstates_types::Vector{StateTypes}: (Do not modify.) GGOV1 has 10 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_A_set-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_A_set","text":"get_A_set(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel A_set.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Dm-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Dm","text":"get_Dm(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Dm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K_turb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_K_turb","text":"get_K_turb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel K_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ka-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ka","text":"get_Ka(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kd_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kd_gov","text":"get_Kd_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kd_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_gov","text":"get_Ki_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_load","text":"get_Ki_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_mw-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_mw","text":"get_Ki_mw(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_mw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kp_gov","text":"get_Kp_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kp_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kp_load","text":"get_Kp_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kp_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ld_ref-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ld_ref","text":"get_Ld_ref(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ld_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_close-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_close","text":"get_R_close(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R_close.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_lim-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_lim","text":"get_R_lim(\n value::GeneralGovModel\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nGet GeneralGovModel R_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_open-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_open","text":"get_R_open(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R_open.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Rselect-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Rselect","text":"get_Rselect(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel Rselect.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_act-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_act","text":"get_T_act(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_act.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_eng-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_eng","text":"get_T_eng(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_eng.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_rate-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_rate","text":"get_T_rate(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ta-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ta","text":"get_Ta(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tb","text":"get_Tb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tc-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tc","text":"get_Tc(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Td_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Td_gov","text":"get_Td_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Td_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tf_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tf_load","text":"get_Tf_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tf_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tpelec-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tpelec","text":"get_Tpelec(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tpelec.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tsa-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tsa","text":"get_Tsa(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tsa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tsb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tsb","text":"get_Tsb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tsb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Wf_nl-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Wf_nl","text":"get_Wf_nl(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Wf_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_db-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_db","text":"get_db(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel db.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::GeneralGovModel) -> Dict{String, Any}\n\n\nGet GeneralGovModel ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_fuel_flag-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_fuel_flag","text":"get_fuel_flag(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel fuel_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_speed_error_signal-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_speed_error_signal","text":"get_speed_error_signal(\n value::GeneralGovModel\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GeneralGovModel speed_error_signal.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::GeneralGovModel) -> Vector{Symbol}\n\n\nGet GeneralGovModel states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::GeneralGovModel\n) -> Vector{StateTypes}\n\n\nGet GeneralGovModel states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::GeneralGovModel\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GeneralGovModel valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_A_set!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_A_set!","text":"set_A_set!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel A_set.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Dm!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Dm!","text":"set_Dm!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Dm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K_turb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_K_turb!","text":"set_K_turb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel K_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ka!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kd_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kd_gov!","text":"set_Kd_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kd_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_gov!","text":"set_Ki_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_load!","text":"set_Ki_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_mw!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_mw!","text":"set_Ki_mw!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_mw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp_gov!","text":"set_Kp_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kp_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp_load!","text":"set_Kp_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kp_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ld_ref!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ld_ref!","text":"set_Ld_ref!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ld_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_close!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_close!","text":"set_R_close!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_close.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_lim!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_lim!","text":"set_R_lim!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_open!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_open!","text":"set_R_open!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_open.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Rselect!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Rselect!","text":"set_Rselect!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Rselect.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_act!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_act!","text":"set_T_act!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_act.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_eng!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_eng!","text":"set_T_eng!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_eng.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_rate!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_rate!","text":"set_T_rate!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ta!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tc!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Td_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Td_gov!","text":"set_Td_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Td_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tf_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tf_load!","text":"set_Tf_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tf_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tpelec!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tpelec!","text":"set_Tpelec!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tpelec.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tsa!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tsa!","text":"set_Tsa!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tsa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tsb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tsb!","text":"set_Tsb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tsb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Wf_nl!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Wf_nl!","text":"set_Wf_nl!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Wf_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_db!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_db!","text":"set_db!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel db.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_fuel_flag!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_fuel_flag!","text":"set_fuel_flag!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel fuel_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_speed_error_signal!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_speed_error_signal!","text":"set_speed_error_signal!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel speed_error_signal.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::GeneralGovModel,\n val\n) -> Any\n\n\nSet GeneralGovModel valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#HydroTurbineGov","page":"TurbineGov","title":"HydroTurbineGov","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/HydroTurbineGov.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.HydroTurbineGov","page":"TurbineGov","title":"PowerSystems.HydroTurbineGov","text":"mutable struct HydroTurbineGov <: TurbineGov\n R::Float64\n r::Float64\n Tr::Float64\n Tf::Float64\n Tg::Float64\n VELM::Float64\n gate_position_limits::MinMax\n Tw::Float64\n At::Float64\n D_T::Float64\n q_nl::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nHydro Turbine-Governor\n\nArguments\n\nR::Float64: Permanent droop parameter, validation range: (0, 0.1)\nr::Float64: Temporary Droop, validation range: (0, 2)\nTr::Float64: Governor time constant, validation range: (eps(), 30)\nTf::Float64: Filter Time constant, validation range: (eps(), 0.1)\nTg::Float64: Servo time constant, validation range: (eps(), 1)\nVELM::Float64: gate velocity limit, validation range: (eps(), 0.3)\ngate_position_limits::MinMax: Gate position limits\nTw::Float64: water time constant, validation range: (eps(), 3)\nAt::Float64: Turbine gain, validation range: (0.8, 1.5)\nD_T::Float64: Turbine Damping, validation range: (0, 0.5)\nq_nl::Float64: No-power flow, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the HydroTurbineGov model are:\n\nx_g1: filter_output,\nx_g2: desired gate, \nx_g3: gate opening, \nx_g4: turbine flow\n\nn_states::Int: (Do not modify.) HYGOV has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) HYGOV has 4 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_At-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_At","text":"get_At(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov At.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_T-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_D_T","text":"get_D_T(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tf-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tf","text":"get_Tf(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tg-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tg","text":"get_Tg(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tr-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tr","text":"get_Tr(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tw-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tw","text":"get_Tw(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_VELM-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_VELM","text":"get_VELM(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov VELM.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::HydroTurbineGov) -> Dict{String, Any}\n\n\nGet HydroTurbineGov ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_gate_position_limits-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_gate_position_limits","text":"get_gate_position_limits(\n value::HydroTurbineGov\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet HydroTurbineGov gate_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::HydroTurbineGov) -> Int64\n\n\nGet HydroTurbineGov n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_q_nl-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_q_nl","text":"get_q_nl(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov q_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_r-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_r","text":"get_r(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::HydroTurbineGov) -> Vector{Symbol}\n\n\nGet HydroTurbineGov states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::HydroTurbineGov\n) -> Vector{StateTypes}\n\n\nGet HydroTurbineGov states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_At!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_At!","text":"set_At!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov At.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_T!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_D_T!","text":"set_D_T!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tf!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tg!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tg!","text":"set_Tg!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tr!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tw!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tw!","text":"set_Tw!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_VELM!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_VELM!","text":"set_VELM!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov VELM.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_gate_position_limits!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_gate_position_limits!","text":"set_gate_position_limits!(\n value::HydroTurbineGov,\n val\n) -> Any\n\n\nSet HydroTurbineGov gate_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_q_nl!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_q_nl!","text":"set_q_nl!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov q_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_r!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_r!","text":"set_r!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#IEEETurbineGov1","page":"TurbineGov","title":"IEEETurbineGov1","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/IEEETurbineGov1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.IEEETurbineGov1","page":"TurbineGov","title":"PowerSystems.IEEETurbineGov1","text":"mutable struct IEEETurbineGov1 <: TurbineGov\n K::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n U0::Float64\n U_c::Float64\n valve_position_limits::MinMax\n T4::Float64\n K1::Float64\n K2::Float64\n T5::Float64\n K3::Float64\n K4::Float64\n T6::Float64\n K5::Float64\n K6::Float64\n T7::Float64\n K7::Float64\n K8::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Type 1 Speed-Governing Model\n\nArguments\n\nK::Float64: Governor Gain, validation range: (5, 30)\nT1::Float64: Input Filter Lag, validation range: (0, 5)\nT2::Float64: Input Filter Lead, validation range: (0, 10)\nT3::Float64: Valve position Time Constant, validation range: (eps(), 1)\nU0::Float64: Maximum Valve Opening Rate, validation range: (0.01, 0.03)\nU_c::Float64: Maximum Valve closing rate, validation range: (-0.3, 0)\nvalve_position_limits::MinMax: Valve position limits in MW\nT4::Float64: Time Constant inlet steam, validation range: (0, 1)\nK1::Float64: Fraction of high presure shaft power, validation range: (-2, 1)\nK2::Float64: Fraction of low presure shaft power, validation range: (0, nothing)\nT5::Float64: Time constant for second boiler pass, validation range: (0, 10)\nK3::Float64: Fraction of high presure shaft power second boiler pass, validation range: (0, 0.5)\nK4::Float64: Fraction of low presure shaft power second boiler pass, validation range: (0, 0.5)\nT6::Float64: Time constant for third boiler pass, validation range: (0, 10)\nK5::Float64: Fraction of high presure shaft power third boiler pass, validation range: (0, 0.35)\nK6::Float64: Fraction of low presure shaft power third boiler pass, validation range: (0, 0.55)\nT7::Float64: Time constant for fourth boiler pass, validation range: (0, 10)\nK7::Float64: Fraction of high presure shaft power fourth boiler pass, validation range: (0, 0.3)\nK8::Float64: Fraction of low presure shaft power fourth boiler pass, validation range: (0, 0.3)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the IEEETurbineGov model are:\n\nx_g1: First Governor integrator,\nx_g2: Governor output,\nx_g3: First Turbine integrator, \nx_g4: Second Turbine Integrator, \nx_g5: Third Turbine Integrator, \nx_g6: Fourth Turbine Integrator,\n\nn_states::Int: (Do not modify.) IEEEG1 has 6 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEEG1 has 6 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K","text":"get_K(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K1-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K1","text":"get_K1(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K2-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K2","text":"get_K2(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K3-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K3","text":"get_K3(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K4-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K4","text":"get_K4(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K5-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K5","text":"get_K5(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K6-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K6","text":"get_K6(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K7-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K7","text":"get_K7(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K8-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K8","text":"get_K8(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T6-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T6","text":"get_T6(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T7-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T7","text":"get_T7(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_U0-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_U0","text":"get_U0(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 U0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_U_c-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_U_c","text":"get_U_c(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 U_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::IEEETurbineGov1) -> Dict{String, Any}\n\n\nGet IEEETurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEETurbineGov1) -> Int64\n\n\nGet IEEETurbineGov1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::IEEETurbineGov1) -> Vector{Symbol}\n\n\nGet IEEETurbineGov1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::IEEETurbineGov1\n) -> Vector{StateTypes}\n\n\nGet IEEETurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::IEEETurbineGov1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet IEEETurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K!","text":"set_K!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K1!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K1!","text":"set_K1!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K2!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K2!","text":"set_K2!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K3!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K3!","text":"set_K3!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K4!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K4!","text":"set_K4!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K5!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K5!","text":"set_K5!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K6!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K6!","text":"set_K6!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K7!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K7!","text":"set_K7!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K8!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K8!","text":"set_K8!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T6!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T6!","text":"set_T6!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T7!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T7!","text":"set_T7!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_U0!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_U0!","text":"set_U0!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 U0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_U_c!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_U_c!","text":"set_U_c!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 U_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::IEEETurbineGov1,\n val\n) -> Any\n\n\nSet IEEETurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PIDGOV","page":"TurbineGov","title":"PIDGOV","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/PIDGOV.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.PIDGOV","page":"TurbineGov","title":"PowerSystems.PIDGOV","text":"mutable struct PIDGOV <: TurbineGov\n feedback_flag::Int\n Rperm::Float64\n T_reg::Float64\n Kp::Float64\n Ki::Float64\n Kd::Float64\n Ta::Float64\n Tb::Float64\n D_turb::Float64\n gate_openings::Tuple{Float64, Float64, Float64}\n power_gate_openings::Tuple{Float64, Float64, Float64}\n G_lim::MinMax\n A_tw::Float64\n Tw::Float64\n V_lim::MinMax\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nHydro Turbine-Governor with PID controller.\n\nArguments\n\nfeedback_flag::Int: Feedback signal for governor droop: 0 for electrical power, and 1 for gate position., validation range: (0, 1)\nRperm::Float64: Speed permanent droop parameter, validation range: (0, nothing)\nT_reg::Float64: Speed detector time constant, validation range: (0, nothing)\nKp::Float64: Governor proportional gain, validation range: (0, nothing)\nKi::Float64: Governor integral gain, validation range: (0, nothing)\nKd::Float64: Governor derivative gain, validation range: (0, nothing)\nTa::Float64: Governor derivative time constant, validation range: (0, nothing)\nTb::Float64: Gate-servo time constant, validation range: (0, nothing)\nD_turb::Float64: Turbine damping factor, validation range: (0, nothing)\ngate_openings::Tuple{Float64, Float64, Float64}: Gate-opening speed at different loads\npower_gate_openings::Tuple{Float64, Float64, Float64}: Power at gate_openings\nG_lim::MinMax: Minimum/Maximum Gate openings (G_min, G_max).\nA_tw::Float64: Factor multiplying Tw, validation range: (eps(), nothing)\nTw::Float64: Water inertia time constant, sec, validation range: (eps(), nothing)\nV_lim::MinMax: Gate opening velocity limits (G_min, G_max).\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the PIDGOV model are:\n\nx_g1: Filtered input measurement,\nx_g2: PI block internal state,\nx_g3: First regulator state, \nx_g4: Derivative block internal state, \nx_g5: Second regulator state, \nx_g6: Gate position state, \nx_g7: Water inertia state\n\nn_states::Int: (Do not modify.) PIDGOV has 7 states\nstates_types::Vector{StateTypes}: (Do not modify.) PIDGOV has 7 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_A_tw-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_A_tw","text":"get_A_tw(value::PIDGOV) -> Float64\n\n\nGet PIDGOV A_tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_turb-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_D_turb","text":"get_D_turb(value::PIDGOV) -> Float64\n\n\nGet PIDGOV D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_G_lim-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_G_lim","text":"get_G_lim(\n value::PIDGOV\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet PIDGOV G_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kd-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Kd","text":"get_Kd(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Ki","text":"get_Ki(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Kp","text":"get_Kp(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::PIDGOV) -> Float64\n\n\nGet PIDGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Rperm-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Rperm","text":"get_Rperm(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Rperm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_reg-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_T_reg","text":"get_T_reg(value::PIDGOV) -> Float64\n\n\nGet PIDGOV T_reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ta-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Ta","text":"get_Ta(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tb-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Tb","text":"get_Tb(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tw-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_Tw","text":"get_Tw(value::PIDGOV) -> Float64\n\n\nGet PIDGOV Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_V_lim-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_V_lim","text":"get_V_lim(\n value::PIDGOV\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet PIDGOV V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::PIDGOV) -> Dict{String, Any}\n\n\nGet PIDGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_feedback_flag-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_feedback_flag","text":"get_feedback_flag(value::PIDGOV) -> Int64\n\n\nGet PIDGOV feedback_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_gate_openings-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_gate_openings","text":"get_gate_openings(\n value::PIDGOV\n) -> Tuple{Float64, Float64, Float64}\n\n\nGet PIDGOV gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::PIDGOV) -> Int64\n\n\nGet PIDGOV n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_power_gate_openings-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_power_gate_openings","text":"get_power_gate_openings(\n value::PIDGOV\n) -> Tuple{Float64, Float64, Float64}\n\n\nGet PIDGOV power_gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::PIDGOV) -> Vector{Symbol}\n\n\nGet PIDGOV states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{PIDGOV}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::PIDGOV) -> Vector{StateTypes}\n\n\nGet PIDGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_A_tw!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_A_tw!","text":"set_A_tw!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV A_tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_turb!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_D_turb!","text":"set_D_turb!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_G_lim!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_G_lim!","text":"set_G_lim!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV G_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kd!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Rperm!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Rperm!","text":"set_Rperm!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Rperm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_reg!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T_reg!","text":"set_T_reg!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV T_reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ta!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tb!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tw!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Tw!","text":"set_Tw!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_V_lim!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_feedback_flag!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_feedback_flag!","text":"set_feedback_flag!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV feedback_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_gate_openings!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_gate_openings!","text":"set_gate_openings!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_power_gate_openings!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_power_gate_openings!","text":"set_power_gate_openings!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV power_gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{PIDGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PIDGOV, val) -> Any\n\n\nSet PIDGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#SteamTurbineGov1","page":"TurbineGov","title":"SteamTurbineGov1","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/SteamTurbineGov1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.SteamTurbineGov1","page":"TurbineGov","title":"PowerSystems.SteamTurbineGov1","text":"mutable struct SteamTurbineGov1 <: TurbineGov\n R::Float64\n T1::Float64\n valve_position_limits::MinMax\n T2::Float64\n T3::Float64\n D_T::Float64\n DB_h::Float64\n DB_l::Float64\n T_rate::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSteam Turbine-Governor. This model considers both TGOV1 or TGOV1DU in PSS/E\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, 0.1)\nT1::Float64: Governor time constant, validation range: (eps(), 0.5)\nvalve_position_limits::MinMax: Valve position limits\nT2::Float64: Lead Lag Lead Time constant , validation range: (0, nothing)\nT3::Float64: Lead Lag Lag Time constant , validation range: (eps(), 10)\nD_T::Float64: Turbine Damping, validation range: (0, 0.5)\nDB_h::Float64: Deadband for overspeed, validation range: (0, nothing)\nDB_l::Float64: Deadband for underspeed, validation range: (nothing, 0)\nT_rate::Float64: Turbine Rate (MW). If zero, generator base is used, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the SteamTurbineGov1 model are:\n\nx_g1: Valve Opening,\nx_g2: Lead-lag state\n\nn_states::Int: (Do not modify.) TGOV1 has 2 states\nstates_types::Vector{StateTypes}: (Do not modify.) TGOV1 has 2 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_DB_h-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_DB_h","text":"get_DB_h(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 DB_h.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_DB_l-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_DB_l","text":"get_DB_l(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 DB_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_T-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_D_T","text":"get_D_T(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_rate-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T_rate","text":"get_T_rate(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::SteamTurbineGov1) -> Dict{String, Any}\n\n\nGet SteamTurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::SteamTurbineGov1) -> Int64\n\n\nGet SteamTurbineGov1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::SteamTurbineGov1) -> Vector{Symbol}\n\n\nGet SteamTurbineGov1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::SteamTurbineGov1\n) -> Vector{StateTypes}\n\n\nGet SteamTurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::SteamTurbineGov1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SteamTurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_DB_h!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_DB_h!","text":"set_DB_h!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 DB_h.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_DB_l!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_DB_l!","text":"set_DB_l!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 DB_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_T!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_D_T!","text":"set_D_T!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_rate!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T_rate!","text":"set_T_rate!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::SteamTurbineGov1,\n val\n) -> Any\n\n\nSet SteamTurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGFixed","page":"TurbineGov","title":"TGFixed","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGFixed","page":"TurbineGov","title":"PowerSystems.TGFixed","text":"mutable struct TGFixed <: TurbineGov\n efficiency::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a fixed Turbine Governor that returns a fixed mechanical torque given by the product of P_ref*efficiency\n\nArguments\n\nefficiency::Float64: Efficiency factor that multiplies P_ref, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) TGFixed has no states\nn_states::Int: (Do not modify.) TGFixed has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGFixed) -> Float64\n\n\nGet TGFixed P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_efficiency-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_efficiency","text":"get_efficiency(value::TGFixed) -> Float64\n\n\nGet TGFixed efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGFixed) -> Dict{String, Any}\n\n\nGet TGFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGFixed) -> Int64\n\n\nGet TGFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGFixed) -> Vector{Symbol}\n\n\nGet TGFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGFixed, val) -> Any\n\n\nSet TGFixed P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_efficiency!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::TGFixed, val) -> Any\n\n\nSet TGFixed efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGFixed, val) -> Any\n\n\nSet TGFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGSimple","page":"TurbineGov","title":"TGSimple","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGSimple.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGSimple","page":"TurbineGov","title":"PowerSystems.TGSimple","text":"mutable struct TGSimple <: TurbineGov\n d_t::Float64\n Tm::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Simple one-state Turbine Governor\n\nArguments\n\nd_t::Float64: Inverse Droop parameter, validation range: (0, nothing)\nTm::Float64: Turbine Governor Low-Pass Time Constant [s], validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the TGSimple model are:\n\nτm: mechanical torque\n\nn_states::Int: (Do not modify.) TGSimple has 1 state\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGSimple) -> Float64\n\n\nGet TGSimple P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tm-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_Tm","text":"get_Tm(value::TGSimple) -> Float64\n\n\nGet TGSimple Tm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_d_t-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_d_t","text":"get_d_t(value::TGSimple) -> Float64\n\n\nGet TGSimple d_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGSimple) -> Dict{String, Any}\n\n\nGet TGSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGSimple) -> Int64\n\n\nGet TGSimple n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGSimple}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGSimple) -> Vector{Symbol}\n\n\nGet TGSimple states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGSimple, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGSimple, val) -> Any\n\n\nSet TGSimple P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tm!-Tuple{TGSimple, Any}","page":"TurbineGov","title":"PowerSystems.set_Tm!","text":"set_Tm!(value::TGSimple, val) -> Any\n\n\nSet TGSimple Tm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_d_t!-Tuple{TGSimple, Any}","page":"TurbineGov","title":"PowerSystems.set_d_t!","text":"set_d_t!(value::TGSimple, val) -> Any\n\n\nSet TGSimple d_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGSimple, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGSimple, val) -> Any\n\n\nSet TGSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGTypeI","page":"TurbineGov","title":"TGTypeI","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGTypeI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGTypeI","page":"TurbineGov","title":"PowerSystems.TGTypeI","text":"mutable struct TGTypeI <: TurbineGov\n R::Float64\n Ts::Float64\n Tc::Float64\n T3::Float64\n T4::Float64\n T5::Float64\n valve_position_limits::MinMax\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Turbine Governor Type I\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, nothing)\nTs::Float64: Governor time constant, validation range: (0, nothing)\nTc::Float64: Servo time constant, validation range: (0, nothing)\nT3::Float64: Transient gain time constant, validation range: (0, nothing)\nT4::Float64: Power fraction time constant, validation range: (0, nothing)\nT5::Float64: Reheat time constant, validation range: (0, nothing)\nvalve_position_limits::MinMax: Valve position limits in MW\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the TGTypeI model are:\n\nx_g1: Governor state,\nx_g2: Servo state,\nx_g3: Reheat state\n\nn_states::Int: (Do not modify.) TGTypeI has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGTypeI) -> Float64\n\n\nGet TGTypeI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::TGTypeI) -> Float64\n\n\nGet TGTypeI R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tc-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_Tc","text":"get_Tc(value::TGTypeI) -> Float64\n\n\nGet TGTypeI Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ts-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_Ts","text":"get_Ts(value::TGTypeI) -> Float64\n\n\nGet TGTypeI Ts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGTypeI) -> Dict{String, Any}\n\n\nGet TGTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGTypeI) -> Int64\n\n\nGet TGTypeI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGTypeI) -> Vector{Symbol}\n\n\nGet TGTypeI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::TGTypeI\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TGTypeI valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tc!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ts!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_Ts!","text":"set_Ts!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI Ts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGTypeII","page":"TurbineGov","title":"TGTypeII","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGTypeII.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGTypeII","page":"TurbineGov","title":"PowerSystems.TGTypeII","text":"mutable struct TGTypeII <: TurbineGov\n R::Float64\n T1::Float64\n T2::Float64\n τ_limits::MinMax\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Turbine Governor Type II\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, nothing)\nT1::Float64: Transient gain time constant, validation range: (0, nothing)\nT2::Float64: Power fraction time constant, validation range: (0, nothing)\nτ_limits::MinMax: Power into the governor limits\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the TGTypeI model are:\n\nx_g1: lead-lag state\n\nn_states::Int: (Do not modify.) TGTypeII has 1 state\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGTypeII) -> Float64\n\n\nGet TGTypeII P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::TGTypeII) -> Float64\n\n\nGet TGTypeII R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::TGTypeII) -> Float64\n\n\nGet TGTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::TGTypeII) -> Float64\n\n\nGet TGTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGTypeII) -> Dict{String, Any}\n\n\nGet TGTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGTypeII) -> Int64\n\n\nGet TGTypeII n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGTypeII) -> Vector{Symbol}\n\n\nGet TGTypeII states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_τ_limits-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_τ_limits","text":"get_τ_limits(\n value::TGTypeII\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TGTypeII τ_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_τ_limits!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_τ_limits!","text":"set_τ_limits!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII τ_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#WPIDHY","page":"TurbineGov","title":"WPIDHY","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/WPIDHY.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.WPIDHY","page":"TurbineGov","title":"PowerSystems.WPIDHY","text":"mutable struct WPIDHY <: TurbineGov\n T_reg::Float64\n reg::Float64\n Kp::Float64\n Ki::Float64\n Kd::Float64\n Ta::Float64\n Tb::Float64\n V_lim::MinMax\n G_lim::MinMax\n Tw::Float64\n P_lim::MinMax\n D::Float64\n gate_openings::Tuple{Float64, Float64, Float64}\n power_gate_openings::Tuple{Float64, Float64, Float64}\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nWoodward PID Hydro Governor\n\nArguments\n\nT_reg::Float64: Input time constant of the governor in s, validation range: (0, nothing)\nreg::Float64: Input governor gain, validation range: (0, nothing)\nKp::Float64: Governor proportional gain, validation range: (0, nothing)\nKi::Float64: Governor integral gain, validation range: (0, nothing)\nKd::Float64: Governor derivative gain, validation range: (0, nothing)\nTa::Float64: Governor derivative/high-frequency time constant, validation range: (0, nothing)\nTb::Float64: Gate-servo time constant, validation range: (0, nothing)\nV_lim::MinMax: Gate opening velocity limits (G_min, G_max).\nG_lim::MinMax: Minimum/Maximum Gate velocity (G_min, G_max).\nTw::Float64: Water inertia time constant, sec, validation range: (eps(), nothing)\nP_lim::MinMax: Minimum/Maximum Gate openings (P_min, P_max).\nD::Float64: Turbine damping coefficient, validation range: (0, nothing)\ngate_openings::Tuple{Float64, Float64, Float64}: Gate-opening speed at different loads\npower_gate_openings::Tuple{Float64, Float64, Float64}: Power at gate_openings\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the PIDGOV model are:\n\nx_g1: Filtered input measurement,\nx_g2: PI block internal state,\nx_g3: First regulator state, \nx_g4: Derivative block internal state, \nx_g5: Second regulator state, \nx_g6: Gate position state, \nx_g7: Water inertia state\n\nn_states::Int: (Do not modify.) PIDGOV has 7 states\nstates_types::Vector{StateTypes}: (Do not modify.) PIDGOV has 7 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_D","text":"get_D(value::WPIDHY) -> Float64\n\n\nGet WPIDHY D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_G_lim-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_G_lim","text":"get_G_lim(\n value::WPIDHY\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet WPIDHY G_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kd-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Kd","text":"get_Kd(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Ki","text":"get_Ki(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Kp","text":"get_Kp(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_lim-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_P_lim","text":"get_P_lim(\n value::WPIDHY\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet WPIDHY P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::WPIDHY) -> Float64\n\n\nGet WPIDHY P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_reg-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_T_reg","text":"get_T_reg(value::WPIDHY) -> Float64\n\n\nGet WPIDHY T_reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ta-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Ta","text":"get_Ta(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tb-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Tb","text":"get_Tb(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tw-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_Tw","text":"get_Tw(value::WPIDHY) -> Float64\n\n\nGet WPIDHY Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_V_lim-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_V_lim","text":"get_V_lim(\n value::WPIDHY\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet WPIDHY V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::WPIDHY) -> Dict{String, Any}\n\n\nGet WPIDHY ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_gate_openings-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_gate_openings","text":"get_gate_openings(\n value::WPIDHY\n) -> Tuple{Float64, Float64, Float64}\n\n\nGet WPIDHY gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::WPIDHY) -> Int64\n\n\nGet WPIDHY n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_power_gate_openings-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_power_gate_openings","text":"get_power_gate_openings(\n value::WPIDHY\n) -> Tuple{Float64, Float64, Float64}\n\n\nGet WPIDHY power_gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_reg-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_reg","text":"get_reg(value::WPIDHY) -> Float64\n\n\nGet WPIDHY reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::WPIDHY) -> Vector{Symbol}\n\n\nGet WPIDHY states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{WPIDHY}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::WPIDHY) -> Vector{StateTypes}\n\n\nGet WPIDHY states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_D!","text":"set_D!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_G_lim!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_G_lim!","text":"set_G_lim!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY G_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kd!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_lim!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_P_lim!","text":"set_P_lim!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_reg!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_T_reg!","text":"set_T_reg!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY T_reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ta!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tb!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tw!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_Tw!","text":"set_Tw!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_V_lim!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_gate_openings!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_gate_openings!","text":"set_gate_openings!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_power_gate_openings!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_power_gate_openings!","text":"set_power_gate_openings!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY power_gate_openings.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_reg!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_reg!","text":"set_reg!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY reg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{WPIDHY, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::WPIDHY, val) -> Any\n\n\nSet WPIDHY states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/renewable_generation_cost/#RenewableGenerationCost","page":"RenewableGenerationCost","title":"RenewableGenerationCost","text":"","category":"section"},{"location":"model_library/renewable_generation_cost/","page":"RenewableGenerationCost","title":"RenewableGenerationCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/RenewableGenerationCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/renewable_generation_cost/#PowerSystems.RenewableGenerationCost","page":"RenewableGenerationCost","title":"PowerSystems.RenewableGenerationCost","text":"mutable struct RenewableGenerationCost <: OperationalCost\n\nvariable::CostCurve: Variable cost represented as a CostCurve\ncurtailment_cost::CostCurve: (default of 0) Cost of curtailing power represented as a CostCurve\n\nRenewableGenerationCost(variable, curtailment_cost)\nRenewableGenerationCost(variable; curtailment_cost)\nRenewableGenerationCost(; variable, curtailment_cost)\n\nAn operational cost of renewable generators which includes the variable cost of energy (like a PPA) and the cost of curtailing power. For example, curtailment costs can be used to represent the loss of tax incentives.\n\nThe variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.\n\n\n\n\n\n","category":"type"},{"location":"model_library/renewable_generation_cost/#PowerSystems.get_curtailment_cost-Tuple{RenewableGenerationCost}","page":"RenewableGenerationCost","title":"PowerSystems.get_curtailment_cost","text":"get_curtailment_cost(\n value::RenewableGenerationCost\n) -> CostCurve\n\n\nGet RenewableGenerationCost curtailment_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/renewable_generation_cost/#PowerSystems.get_variable-Tuple{RenewableGenerationCost}","page":"RenewableGenerationCost","title":"PowerSystems.get_variable","text":"get_variable(value::RenewableGenerationCost) -> CostCurve\n\n\nGet RenewableGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/renewable_generation_cost/#PowerSystems.set_curtailment_cost!-Tuple{RenewableGenerationCost, Any}","page":"RenewableGenerationCost","title":"PowerSystems.set_curtailment_cost!","text":"set_curtailment_cost!(\n value::RenewableGenerationCost,\n val\n) -> Any\n\n\nSet RenewableGenerationCost curtailment_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/renewable_generation_cost/#PowerSystems.set_variable!-Tuple{RenewableGenerationCost, Any}","page":"RenewableGenerationCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::RenewableGenerationCost, val) -> Any\n\n\nSet RenewableGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"api/type_tree/#Type-Hierarchy","page":"Type Hierarchy","title":"Type Hierarchy","text":"","category":"section"},{"location":"api/type_tree/","page":"Type Hierarchy","title":"Type Hierarchy","text":"Here is the complete PowerSystems.jl type hierarchy:","category":"page"},{"location":"api/type_tree/","page":"Type Hierarchy","title":"Type Hierarchy","text":"using PowerSystems #hide\nimport TypeTree: tt #hide\ndocs_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"utils\"); #hide\ninclude(joinpath(docs_dir, \"docs_utils.jl\")); #hide\nprint(join(tt(PowerSystems.IS.InfrastructureSystemsType), \"\")) #hide","category":"page"},{"location":"model_library/generated_HydroDispatch/#HydroDispatch","page":"HydroDispatch","title":"HydroDispatch","text":"","category":"section"},{"location":"model_library/generated_HydroDispatch/","page":"HydroDispatch","title":"HydroDispatch","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroDispatch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.HydroDispatch","page":"HydroDispatch","title":"PowerSystems.HydroDispatch","text":"mutable struct HydroDispatch <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n base_power::Float64\n operation_cost::Union{HydroGenerationCost, MarketBidCost}\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA hydropower generator without a reservoir, suitable for modeling run-of-river hydropower.\n\nFor hydro generators with an upper reservoir, see HydroEnergyReservoir\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\noperation_cost::Union{HydroGenerationCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroDispatch/#InfrastructureSystems.get_name-Tuple{HydroDispatch}","page":"HydroDispatch","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroDispatch) -> String\n\n\nGet HydroDispatch name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_active_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_active_power_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroDispatch\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroDispatch active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_available-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_available","text":"get_available(value::HydroDispatch) -> Bool\n\n\nGet HydroDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_base_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroDispatch) -> Float64\n\n\nGet HydroDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_bus-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_bus","text":"get_bus(value::HydroDispatch) -> ACBus\n\n\nGet HydroDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_dynamic_injector-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroDispatch\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroDispatch dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_ext-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_ext","text":"get_ext(value::HydroDispatch) -> Dict{String, Any}\n\n\nGet HydroDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_operation_cost-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroDispatch\n) -> Union{HydroGenerationCost, MarketBidCost}\n\n\nGet HydroDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_prime_mover_type-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::HydroDispatch) -> PrimeMovers\n\n\nGet HydroDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_ramp_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroDispatch\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroDispatch ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_rating-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_rating","text":"get_rating(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_reactive_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_reactive_power_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroDispatch\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_services-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_services","text":"get_services(value::HydroDispatch) -> Vector{Service}\n\n\nGet HydroDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_time_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroDispatch\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroDispatch time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_active_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_active_power_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_available!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_available!","text":"set_available!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_base_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_bus!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_ext!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_operation_cost!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_prime_mover_type!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_ramp_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_rating!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_reactive_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_reactive_power_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_services!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_services!","text":"set_services!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_time_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#Line","page":"Line","title":"Line","text":"","category":"section"},{"location":"model_library/generated_Line/","page":"Line","title":"Line","text":"Modules = [PowerSystems]\nPages = [\"generated/Line.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Line/#PowerSystems.Line","page":"Line","title":"PowerSystems.Line","text":"mutable struct Line <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n b::FromTo\n rating::Float64\n angle_limits::MinMax\n g::FromTo\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAn AC transmission line\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\nreactive_power_flow::Float64: Initial condition of reactive power flow on the line (MVAR)\narc::Arc: An Arc defining this line from a bus to another bus\nr::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)\nx::Float64: Reactance in pu (SYSTEM_BASE), validation range: (0, 4)\nb::FromTo: Shunt susceptance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)\nrating::Float64: Thermal rating (MVA). Flow on the line must be between -rating and rating. When defining a line before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to\nangle_limits::MinMax: Minimum and maximum angle limits (radians), validation range: (-1.571, 1.571)\ng::FromTo: (default: (from=0.0, to=0.0)) Shunt conductance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Line/#InfrastructureSystems.get_name-Tuple{Line}","page":"Line","title":"InfrastructureSystems.get_name","text":"get_name(value::Line) -> String\n\n\nGet Line name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_active_power_flow-Tuple{Line}","page":"Line","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::Line) -> Any\n\n\nGet Line active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_angle_limits-Tuple{Line}","page":"Line","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::Line\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet Line angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_arc-Tuple{Line}","page":"Line","title":"PowerSystems.get_arc","text":"get_arc(value::Line) -> Arc\n\n\nGet Line arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_available-Tuple{Line}","page":"Line","title":"PowerSystems.get_available","text":"get_available(value::Line) -> Bool\n\n\nGet Line available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_b-Tuple{Line}","page":"Line","title":"PowerSystems.get_b","text":"get_b(\n value::Line\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet Line b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_ext-Tuple{Line}","page":"Line","title":"PowerSystems.get_ext","text":"get_ext(value::Line) -> Dict{String, Any}\n\n\nGet Line ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_g-Tuple{Line}","page":"Line","title":"PowerSystems.get_g","text":"get_g(\n value::Line\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet Line g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_r-Tuple{Line}","page":"Line","title":"PowerSystems.get_r","text":"get_r(value::Line) -> Float64\n\n\nGet Line r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_rating-Tuple{Line}","page":"Line","title":"PowerSystems.get_rating","text":"get_rating(value::Line) -> Any\n\n\nGet Line rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_reactive_power_flow-Tuple{Line}","page":"Line","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::Line) -> Any\n\n\nGet Line reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_services-Tuple{Line}","page":"Line","title":"PowerSystems.get_services","text":"get_services(value::Line) -> Vector{Service}\n\n\nGet Line services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_x-Tuple{Line}","page":"Line","title":"PowerSystems.get_x","text":"get_x(value::Line) -> Float64\n\n\nGet Line x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_active_power_flow!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::Line, val) -> Any\n\n\nSet Line active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_angle_limits!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(value::Line, val) -> Any\n\n\nSet Line angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_arc!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_arc!","text":"set_arc!(value::Line, val) -> Any\n\n\nSet Line arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_available!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_available!","text":"set_available!(value::Line, val) -> Any\n\n\nSet Line available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_b!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_b!","text":"set_b!(value::Line, val) -> Any\n\n\nSet Line b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_ext!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_ext!","text":"set_ext!(value::Line, val) -> Any\n\n\nSet Line ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_g!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_g!","text":"set_g!(value::Line, val) -> Any\n\n\nSet Line g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_r!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_r!","text":"set_r!(value::Line, val) -> Any\n\n\nSet Line r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_rating!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_rating!","text":"set_rating!(value::Line, val) -> Any\n\n\nSet Line rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_reactive_power_flow!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::Line, val) -> Any\n\n\nSet Line reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_services!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_services!","text":"set_services!(value::Line, val) -> Any\n\n\nSet Line services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_x!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_x!","text":"set_x!(value::Line, val) -> Any\n\n\nSet Line x.\n\n\n\n\n\n","category":"method"},{"location":"explanation/per_unit/#per_unit","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"","category":"section"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"It is often useful to express power systems data in relative terms using per-unit conventions. PowerSystems.jl supports the automatic conversion of data between three different unit systems:","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"\"NATURAL_UNITS\": The naturally defined units of each parameter (typically MW).\n\"SYSTEM_BASE\": Parameter values are divided by the system base_power.\n\"DEVICE_BASE\": Parameter values are divided by the device base_power.","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"PowerSystems.jl supports these unit systems because different power system tools and data sets use different units systems by convention, such as:","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"Dynamics data is often defined in device base\nNetwork data (e.g., reactance, resistance) is often defined in system base\nProduction cost modeling data is often gathered from variety of data sources, which are typically defined in natural units","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"These three unit bases allow easy conversion between unit systems. This allows PowerSystems.jl users to input data in the formats they have available, as well as view data in the unit system that is most intuitive to them.","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"You can get and set the unit system setting of a System with get_units_base and set_units_base_system!.","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"Conversion between unit systems does not change the stored parameter values. Instead, unit system conversions are made when accessing parameters using the accessor functions, thus making it imperative to utilize the accessor functions instead of the \"dot\" accessor methods to ensure the return of the correct values. The units of the parameter values stored in each struct are defined in src/descriptors/power_system_structs.json.","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"There are some unit system conventions in PowerSystems.jl when defining new components. Currently, when you define components that aren't attached to a System, you must define all fields in \"DEVICE_BASE\", except for certain components that don't have their own base_power rating, such as Lines, where the rating must be defined in \"SYSTEM_BASE\".","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"In the future, PowerSystems.jl hopes to support defining components in natural units. For now, if you want to define data in natural units, you must first set the system units to \"NATURAL_UNITS\", define an empty component, and then use the accessor functions (e.g., getters and setters), to define each field within the component. The accessor functions will then do the data conversion from your input data in natural units (e.g., MW or MVA) to per-unit.","category":"page"},{"location":"explanation/per_unit/","page":"Per-unit Conventions","title":"Per-unit Conventions","text":"By default, PowerSystems.jl uses \"SYSTEM_BASE\" because many optimization problems won't converge when using natural units. If you change the unit setting, it's suggested that you switch back to \"SYSTEM_BASE\" before solving an optimization problem (for example in PowerSimulations.jl).","category":"page"},{"location":"model_library/generated_Arc/#Arc","page":"Arc","title":"Arc","text":"","category":"section"},{"location":"model_library/generated_Arc/","page":"Arc","title":"Arc","text":"Modules = [PowerSystems]\nPages = [\"generated/Arc.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Arc/#PowerSystems.Arc","page":"Arc","title":"PowerSystems.Arc","text":"mutable struct Arc <: Topology\n from::Bus\n to::Bus\n internal::InfrastructureSystemsInternal\nend\n\nA topological directed edge connecting two buses.\n\nArcs are used to define the from and to buses when defining a line or transformer\n\nArguments\n\nfrom::Bus: The initial bus\nto::Bus: The terminal bus\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Arc/#PowerSystems.get_from-Tuple{Arc}","page":"Arc","title":"PowerSystems.get_from","text":"get_from(value::Arc) -> Bus\n\n\nGet Arc from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.get_to-Tuple{Arc}","page":"Arc","title":"PowerSystems.get_to","text":"get_to(value::Arc) -> Bus\n\n\nGet Arc to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.set_from!-Tuple{Arc, Any}","page":"Arc","title":"PowerSystems.set_from!","text":"set_from!(value::Arc, val) -> Any\n\n\nSet Arc from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.set_to!-Tuple{Arc, Any}","page":"Arc","title":"PowerSystems.set_to!","text":"set_to!(value::Arc, val) -> Any\n\n\nSet Arc to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#InterruptiblePowerLoad","page":"InterruptiblePowerLoad","title":"InterruptiblePowerLoad","text":"","category":"section"},{"location":"model_library/generated_InterruptiblePowerLoad/","page":"InterruptiblePowerLoad","title":"InterruptiblePowerLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/InterruptiblePowerLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.InterruptiblePowerLoad","page":"InterruptiblePowerLoad","title":"PowerSystems.InterruptiblePowerLoad","text":"mutable struct InterruptiblePowerLoad <: ControllableLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n base_power::Float64\n operation_cost::Union{LoadCost, MarketBidCost}\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA static power load that can be compensated for temporary or continuous interruptions to its requested demand.\n\nThese loads are most commonly used for operational optimizations and can be used to model, for example, large commercial and industrial customers enrolled in demand response programs. This load has a target demand profile (set by a max_active_power time series for an operational simulation) that can be reduced to satisfy other system needs. For simpler loads without an operating cost for demand response, see PowerLoad\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial steady state active power demand (MW)\nreactive_power::Float64: Initial steady state reactive power demand (MVAR)\nmax_active_power::Float64: Maximum active power (MW) that this load can demand\nmax_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand\nbase_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)\noperation_cost::Union{LoadCost, MarketBidCost}: OperationalCost of interrupting load\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InterruptiblePowerLoad/#InfrastructureSystems.get_name-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::InterruptiblePowerLoad) -> String\n\n\nGet InterruptiblePowerLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_active_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_available-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_available","text":"get_available(value::InterruptiblePowerLoad) -> Bool\n\n\nGet InterruptiblePowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_base_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::InterruptiblePowerLoad) -> Float64\n\n\nGet InterruptiblePowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_bus-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_bus","text":"get_bus(value::InterruptiblePowerLoad) -> ACBus\n\n\nGet InterruptiblePowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_dynamic_injector-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::InterruptiblePowerLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet InterruptiblePowerLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_ext-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_ext","text":"get_ext(value::InterruptiblePowerLoad) -> Dict{String, Any}\n\n\nGet InterruptiblePowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_max_active_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_max_reactive_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_operation_cost-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::InterruptiblePowerLoad\n) -> Union{LoadCost, MarketBidCost}\n\n\nGet InterruptiblePowerLoad operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_reactive_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_services-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_services","text":"get_services(\n value::InterruptiblePowerLoad\n) -> Vector{Service}\n\n\nGet InterruptiblePowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_active_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_available!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_available!","text":"set_available!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_base_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_bus!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_ext!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_max_active_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_max_reactive_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_operation_cost!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_reactive_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_services!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_services!","text":"set_services!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"explanation/time_series/#ts_data","page":"Time Series Data","title":"Time Series Data","text":"","category":"section"},{"location":"explanation/time_series/#Categories-of-Time-Series","page":"Time Series Data","title":"Categories of Time Series","text":"","category":"section"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The bulk of the data in many power system models is time series data. Given the potential complexity, PowerSystems.jl has a set of definitions to organize this data and enable consistent modeling.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems.jl supports two categories of time series data depending on the process to obtain the data and its interpretation:","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Static Time Series Data\nForecasts","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"These categories are are all subtypes of TimeSeriesData and fall within this time series type hierarchy:","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"using PowerSystems #hide\nimport TypeTree: tt #hide\ndocs_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"utils\"); #hide\ninclude(joinpath(docs_dir, \"docs_utils.jl\")); #hide\nprint(join(tt(TimeSeriesData), \"\")) #hide","category":"page"},{"location":"explanation/time_series/#Static-Time-Series-Data","page":"Time Series Data","title":"Static Time Series Data","text":"","category":"section"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"A static time series data is a single column of data where each time period has a single value assigned to a component field, such as its maximum active power. This data commonly is obtained from historical information or the realization of a time-varying quantity.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Static time series usually comes in the following format, with a set resolution between the time-stamps:","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"DateTime Value\n2020-09-01T00:00:00 100.0\n2020-09-01T01:00:00 101.0\n2020-09-01T02:00:00 99.0","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"This example is a 1-hour resolution static time-series.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"In PowerSystems, a static time series is represented using SingleTimeSeries.","category":"page"},{"location":"explanation/time_series/#Forecasts","page":"Time Series Data","title":"Forecasts","text":"","category":"section"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"A forecast time series includes predicted values of a time-varying quantity that commonly includes a look-ahead window and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Key forecast format parameters are the forecast resolution, the interval of time between forecast initial times, and the number of forecast windows (or forecasted values) in the forecast horizon.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Forecast data usually comes in the following format, where a column represents the time stamp associated with the initial time of the forecast, and the remaining columns represent the forecasted values at each step in the forecast horizon.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"DateTime 0 1 2 3 4 5 6 7\n2020-09-01T00:00:00 100.0 101.0 101.3 90.0 98.0 87.0 88.0 67.0\n2020-09-01T01:00:00 101.0 101.3 99.0 98.0 88.9 88.3 67.1 89.4\n2020-09-01T02:00:00 99.0 67.0 89.0 99.9 100.0 101.0 112.0 101.3","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"This example forecast has a interval of 1 hour and a horizon of 8.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems defines the following Julia structs to represent forecasts:","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Deterministic: Point forecast without any uncertainty representation.\nProbabilistic: Stores a discretized cumulative distribution functions (CDFs) or probability distribution functions (PDFs) at each time step in the look-ahead window.\nScenarios: Stores a set of probable trajectories for forecasted quantity with equal probability.","category":"page"},{"location":"explanation/time_series/#Data-Storage","page":"Time Series Data","title":"Data Storage","text":"","category":"section"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"By default PowerSystems stores time series data in an HDF5 file. This prevents large datasets from overwhelming system memory. Refer to this page for details on how the time series data is stored in HDF5 files.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data can be stored actual component values (for instance MW) or scaling factors intended to be multiplied by a scalar to generate the component values. By default PowerSystems treats the values in the time series data as physical units. In order to specify them as scaling factors, you must pass the accessor function that provides the multiplier value (e.g., get_time_series_array). The scaling factor multiplier must be passed into the forecast when you create it to use this option.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The time series contains fields for scaling_factor_multiplier and data to identify the details of th Component field that the time series describes, and the time series data. For example: we commonly want to use a time series to describe the maximum active power capability of a renewable generator. In this case, we can create a SingleTimeSeries with a TimeArray and an accessor function to the maximum active power field in the struct describing the generator. In this way, we can store a scaling factor time series that will get multiplied by the maximum active power rather than the magnitudes of the maximum active power time series.","category":"page"},{"location":"explanation/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Examples of how to create and add time series to system can be found in the Add Time Series Example","category":"page"},{"location":"how_to/adding_additional_fields/#additional_fields","page":"...add additional data to a component","title":"Adding additional data to a component","text":"","category":"section"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"All PowerSystems.jl components have an ext field that contains an empty Dictionary. This Dictionary is useful to contain additional required data where there is no need to create new behaviors with that data. A simple example is the addition of geographic information, if needed.","category":"page"},{"location":"how_to/adding_additional_fields/#Example","page":"...add additional data to a component","title":"Example","text":"","category":"section"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"using PowerSystems #hide\nusing PowerSystemCaseBuilder #hide\nsystem = build_system(PSISystems, \"modified_RTS_GMLC_DA_sys\"); #hide","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"Step 1: Use get_ext to get the ext field of the desired components and assign your data:","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"for g in get_components(ThermalStandard, system)\n external_field = get_ext(g)\n external_field[\"my_data\"] = 1.0\nend","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"Here, we added additional data called my_data to the ThermalStandard generators in a previously defined System.","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"Step 2: Retrieve your data using get_ext again","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"First, retrieve the first ThermalStandard generator:","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"gen = collect(get_components(ThermalStandard, system))[1];","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"Then, retrieve my_data from the generator and verify it is 1.0, as assigned.","category":"page"},{"location":"how_to/adding_additional_fields/","page":"...add additional data to a component","title":"...add additional data to a component","text":"retrieved_data = get_ext(gen)[\"my_data\"]","category":"page"},{"location":"how_to/add_new_types/#Add-a-New-or-Custom-Type","page":"...customize or add a new Type","title":"Add a New or Custom Type","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"This page describes how developers should add types to PowerSystems.jl","category":"page"},{"location":"how_to/add_new_types/#Type-Hierarchy","page":"...customize or add a new Type","title":"Type Hierarchy","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"All structs that correlate to power system components must be subtypes of the Component abstract type. Browse its type hierachy to choose an appropriate supertype for your new struct.","category":"page"},{"location":"how_to/add_new_types/#Interfaces","page":"...customize or add a new Type","title":"Interfaces","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Refer to the managing components guide for component requirements.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"In particular, please note the methods supports_time_series (default = false) and supports_supplemental_attributes (default = true) that you may need to implement.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Note: get_internal and get_name are imported into PowerSystems, so you should implement your methods as PowerSystems methods.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Some abstract types define required interface functions in docstring. Be sure to implement each of them for your new type.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Formalized documentation for each abstract type is TBD.","category":"page"},{"location":"how_to/add_new_types/#Specialize-an-Existing-Type","page":"...customize or add a new Type","title":"Specialize an Existing Type","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"There are scenarios where you may want to make a new type that is identical to an existing type except for one attribute or behavior, and don't want to duplicate the entire existing type and methods. In programming languages that support inheritance you would derive a new class from the existing class and automatically inherit its fields and methods. Julia doesn't support that. However, you can achieve a similar result with a forwarding macro. The basic idea is that you include the existing type within your struct and then use a macro to automatically forward specific methods to that instance.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"A few PowerSystems structs use the macro InfrastructureSystems.@forward to do this. Refer to the struct RoundRotorQuadratic for an example of how to use this.","category":"page"},{"location":"how_to/add_new_types/#Custom-Rules","page":"...customize or add a new Type","title":"Custom Rules","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Some types require special checks before they can be added to or removed from a system. One example is the case where a component includes another component that is also stored in the system. We must ensure that the parent component does not contain a reference to another component that is not already attached to the system.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Similarly, if the child object is removed from the system we must also remove the parent's reference to that child.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"The source file src/base.jl provides functions that you can implement for your new type to manage these scenarios.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"check_component_addition(sys::System, component::Component; kwargs...)\nhandle_component_addition!(sys::System, component::Component; kwargs...)\ncheck_component_removal(sys::System, component::Component; kwargs...)\nhandle_component_removal!(sys::System, component::Component; kwargs...)","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"The functions add_component!() and remove_component!() call the check function before performing actions and then call the handle function afterwards. The default behavior of these functions is to do nothing. Implement versions that take your type in order to add your own checks or perform additional actions.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Beware of the condition where a custom method is already implemented for a supertype of your type.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Note that you can call the helper functions is_attached(component, system) and throw_if_not_attached(component, system).","category":"page"},{"location":"how_to/add_new_types/#Custom-Validation","page":"...customize or add a new Type","title":"Custom Validation","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"You can implement three methods to perform custom validation or correction for your type. PowerSystems calls all of these functions in add_component!.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"sanitize_component!(component::Component, sys::System): intended to make standard data corrections (e.g. voltage angle in degrees -> radians)\nvalidate_component(component::Component): intended to check component field values for internal consistency\nvalidate_component_with_system(component::Component, sys::System): intended to check component field values for consistency with system","category":"page"},{"location":"how_to/add_new_types/#Struct-Requirements-for-Serialization-of-custom-components","page":"...customize or add a new Type","title":"Struct Requirements for Serialization of custom components","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"One key feature of PowerSystems.jl is the serialization capabilities. Supporting serialization and de-serialization of custom components requires the implementation of several methods. The serialization code converts structs to dictionaries where the struct fields become dictionary keys.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"The code imposes these requirements:","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"The InfrastructureSystems methods serialize and deserialize must be implemented for the struct. InfrastructureSystems implements a method that covers all subtypes of InfrastructureSystemsType. All PowerSystems components should be subtypes of PowerSystems.Component which is a subtype InfrastructureSystemsType, so any new structs should be covered as well.\nAll struct fields must be able to be encoded in JSON format or be covered be covered by serialize and deserialize methods. Basic types, such as numbers and strings or arrays and dictionaries of numbers and strings, should just work. Complex containers with symbols may not.\nStructs relying on the default deserialize method must have a kwarg-only constructor. The deserialization code constructs objects by splatting the dictionary key/value pairs into the constructor.\nStructs that contain other PowerSystem components (like a generator contains a bus) must serialize those components as UUIDs instead of actual values. The deserialization code uses the UUIDs as a mechanism to restore a reference to the actual object rather a new object with identical values. It also significantly reduces the size of the JSON file.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Refer to InfrastructureSystems.serialize_struct for example behavior. New structs that are not subtypes of InfrastructureSystemsType may be able to call it directly.","category":"page"},{"location":"how_to/add_new_types/#How-to-trouble-shoot-serialization-issues","page":"...customize or add a new Type","title":"How to trouble-shoot serialization issues","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Here are some examples of potential problems and solutions if you need to implement custom InfrastructureSystems.serialize and InfrastructureSystems.deserialize methods for your type.:","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Problem: Your struct contains a field defined as an abstract type. The deserialization process doesn't know what concrete type to construct.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Solution: Encode the concrete type into the serialized dictionary as a string.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Example: serialize and deserialize methods for DynamicBranch in src/models/dynamic_branch.jl.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Problem: Similar to above in that a field is defined as an abstract type but the struct is parameterized on the actual concrete type.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Solution: Use the fact that the concrete type is encoded into the serialized type of the struct and extract it in a customized deserialze method.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Example: deserialize method for OuterControl in src/models/OuterControl.jl.","category":"page"},{"location":"how_to/add_new_types/#Adding-PowerSystems.jl-as-a-dependency-in-a-modeling-package","page":"...customize or add a new Type","title":"Adding PowerSystems.jl as a dependency in a modeling package","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"module MyModelingModule\n\nimport PowerSystems\nimport InfrastructureSystems\nconst PSY = PowerSystems\nconst IS = InfrastructureSystems\n\nexport MyDevice\nexport get_name\n\nmutable struct MyDevice <: PSY.Device\n name::String\n internal::IS.InfrastructureSystemsInternal\nend\n\nfunction MyDevice(name::String)\n return MyDevice(name, IS.InfrastructureSystemsInternal())\nend\n\nPSY.get_name(val::MyDevice) = val.name\n\nend","category":"page"},{"location":"how_to/add_new_types/#autogen","page":"...customize or add a new Type","title":"Auto-generating Structs","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Most PowerSystems.jl structs are auto-generated from the JSON descriptor file src/descriptors/power_system_structs.json. You can add your new struct here or write it manually when contributing code to the repository.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"If all you need is the basic struct definition and getter/setter functions then you will likely find the auto-generation helpful.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"If you will need to write specialized functions for the type then you will probably want to write it manually.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"Please refer to the docstrings for the functions generate_struct and generate_structs. Full details are in the InfrastructureSystems documentation at https://nrel-sienna.github.io/InfrastructureSystems.jl/stable/devguide/autogeneration/.","category":"page"},{"location":"how_to/add_new_types/#Testing-the-addition-of-new-struct-to-the-code-base","page":"...customize or add a new Type","title":"Testing the addition of new struct to the code base","text":"","category":"section"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"In order to merge new structs to the code base, your struct needs to pass several tests.","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"addition to System\nretrieval from System\nserialization/de-serialization","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"The following code block is an example of the code that the new struct needs to pass","category":"page"},{"location":"how_to/add_new_types/","page":"...customize or add a new Type","title":"...customize or add a new Type","text":"using PowerSystems\n\nsys = System(100.0)\ndevice = NewType(data)\n\n# add your component to the system\nadd_component!(sys, device)\nretrived_device = get_component(NewType, sys, \"component_name\")\n\n# Serialize\nto_json(sys, \"sys.json\")\n\n# Re-create the system and find your component.\nsys2 = System(\"sys.json\")\nserialized_device = get_component(NewType, sys, \"component_name\")\n\n@test get_name(retrieved_device) == get_name(serialized_device)","category":"page"},{"location":"model_library/generated_DCBus/#DCBus","page":"DCBus","title":"DCBus","text":"","category":"section"},{"location":"model_library/generated_DCBus/","page":"DCBus","title":"DCBus","text":"Modules = [PowerSystems]\nPages = [\"generated/DCBus.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCBus/#PowerSystems.DCBus","page":"DCBus","title":"PowerSystems.DCBus","text":"mutable struct DCBus <: Bus\n number::Int\n name::String\n magnitude::Union{Nothing, Float64}\n voltage_limits::Union{Nothing, MinMax}\n base_voltage::Union{Nothing, Float64}\n area::Union{Nothing, Area}\n load_zone::Union{Nothing, LoadZone}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA DC bus\n\nArguments\n\nnumber::Int: A unique bus identification number (positive integer)\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nmagnitude::Union{Nothing, Float64}: voltage as a multiple of base_voltage, validation range: voltage_limits\nvoltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of base_voltage\nbase_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing)\narea::Union{Nothing, Area}: (default: nothing) the area containing the DC bus\nload_zone::Union{Nothing, LoadZone}: (default: nothing) the load zone containing the DC bus\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCBus/#InfrastructureSystems.get_name-Tuple{DCBus}","page":"DCBus","title":"InfrastructureSystems.get_name","text":"get_name(value::DCBus) -> String\n\n\nGet DCBus name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_area-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_area","text":"get_area(value::DCBus) -> Union{Nothing, Area}\n\n\nGet DCBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_base_voltage-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_base_voltage","text":"get_base_voltage(value::DCBus) -> Union{Nothing, Float64}\n\n\nGet DCBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_ext-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_ext","text":"get_ext(value::DCBus) -> Dict{String, Any}\n\n\nGet DCBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_load_zone-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_load_zone","text":"get_load_zone(value::DCBus) -> Union{Nothing, LoadZone}\n\n\nGet DCBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_magnitude-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_magnitude","text":"get_magnitude(value::DCBus) -> Union{Nothing, Float64}\n\n\nGet DCBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_number-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_number","text":"get_number(value::DCBus) -> Int64\n\n\nGet DCBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_voltage_limits-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_voltage_limits","text":"get_voltage_limits(\n value::DCBus\n) -> Union{Nothing, @NamedTuple{min::Float64, max::Float64}}\n\n\nGet DCBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_area!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_area!","text":"set_area!(value::DCBus, val) -> Any\n\n\nSet DCBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_base_voltage!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_base_voltage!","text":"set_base_voltage!(value::DCBus, val) -> Any\n\n\nSet DCBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_ext!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_ext!","text":"set_ext!(value::DCBus, val) -> Any\n\n\nSet DCBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_load_zone!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_load_zone!","text":"set_load_zone!(value::DCBus, val) -> Any\n\n\nSet DCBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_magnitude!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_magnitude!","text":"set_magnitude!(value::DCBus, val) -> Any\n\n\nSet DCBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_number!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_number!","text":"set_number!(value::DCBus, val) -> Any\n\n\nSet DCBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_voltage_limits!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_voltage_limits!","text":"set_voltage_limits!(value::DCBus, val) -> Any\n\n\nSet DCBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#SwitchedAdmittance","page":"SwitchedAdmittance","title":"SwitchedAdmittance","text":"","category":"section"},{"location":"model_library/generated_SwitchedAdmittance/","page":"SwitchedAdmittance","title":"SwitchedAdmittance","text":"Modules = [PowerSystems]\nPages = [\"generated/SwitchedAdmittance.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.SwitchedAdmittance","page":"SwitchedAdmittance","title":"PowerSystems.SwitchedAdmittance","text":"mutable struct SwitchedAdmittance <: ElectricLoad\n name::String\n available::Bool\n bus::ACBus\n Y::Complex{Float64}\n number_of_steps::Int\n Y_increase::Complex{Float64}\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA switched admittance, with discrete steps to adjust the admittance.\n\nMost often used in power flow studies, iterating over the steps to see impacts of admittance on the results. Total admittance is calculated as: Y + number_of_steps * Y_increase\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nY::Complex{Float64}: Initial admittance at N = 0\nnumber_of_steps::Int: (default: 0) Number of steps for adjustable shunt\nY_increase::Complex{Float64}: (default: 0) Admittance increment for each of step increase\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection model for admittance\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_SwitchedAdmittance/#InfrastructureSystems.get_name-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"InfrastructureSystems.get_name","text":"get_name(value::SwitchedAdmittance) -> String\n\n\nGet SwitchedAdmittance name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_Y-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_Y","text":"get_Y(value::SwitchedAdmittance) -> ComplexF64\n\n\nGet SwitchedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_Y_increase-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_Y_increase","text":"get_Y_increase(value::SwitchedAdmittance) -> ComplexF64\n\n\nGet SwitchedAdmittance Y_increase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_available-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_available","text":"get_available(value::SwitchedAdmittance) -> Bool\n\n\nGet SwitchedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_bus-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_bus","text":"get_bus(value::SwitchedAdmittance) -> ACBus\n\n\nGet SwitchedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_dynamic_injector-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::SwitchedAdmittance\n) -> Union{Nothing, DynamicInjection}\n\n\nGet SwitchedAdmittance dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_ext-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_ext","text":"get_ext(value::SwitchedAdmittance) -> Dict{String, Any}\n\n\nGet SwitchedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_number_of_steps-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_number_of_steps","text":"get_number_of_steps(value::SwitchedAdmittance) -> Int64\n\n\nGet SwitchedAdmittance number_of_steps.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_services-Tuple{SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_services","text":"get_services(value::SwitchedAdmittance) -> Vector{Service}\n\n\nGet SwitchedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_Y!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_Y!","text":"set_Y!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_Y_increase!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_Y_increase!","text":"set_Y_increase!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance Y_increase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_available!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_available!","text":"set_available!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_bus!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_bus!","text":"set_bus!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_ext!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_ext!","text":"set_ext!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_number_of_steps!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_number_of_steps!","text":"set_number_of_steps!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance number_of_steps.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_services!-Tuple{SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_services!","text":"set_services!(value::SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#StandardLoad","page":"StandardLoad","title":"StandardLoad","text":"","category":"section"},{"location":"model_library/generated_StandardLoad/","page":"StandardLoad","title":"StandardLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/StandardLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_StandardLoad/#PowerSystems.StandardLoad","page":"StandardLoad","title":"PowerSystems.StandardLoad","text":"mutable struct StandardLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n base_power::Float64\n constant_active_power::Float64\n constant_reactive_power::Float64\n impedance_active_power::Float64\n impedance_reactive_power::Float64\n current_active_power::Float64\n current_reactive_power::Float64\n max_constant_active_power::Float64\n max_constant_reactive_power::Float64\n max_impedance_active_power::Float64\n max_impedance_reactive_power::Float64\n max_current_active_power::Float64\n max_current_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA voltage-dependent ZIP load, most commonly used for dynamics modeling.\n\nA StandardLoad breaks the ZIP into three pieces: Z (constant impedance), I (constant current), and P (constant power), according to P = P_P * V^0 + P_I * V^1 + P_Z * V^2 for active power and Q = Q_P * V^0 + Q_I * V^1 + Q_Z * V^2 for reactive power. (Voltage V is in per unit.)\n\nFor an alternative exponential formulation of the ZIP model, see ExponentialLoad. For a simpler load model with no voltage dependency, see PowerLoad\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nbase_power::Float64: Base power of the load (MVA) for per unitization, validation range: (0, nothing)\nconstant_active_power::Float64: (default: 0.0) Constant active power demand in MW (P_P)\nconstant_reactive_power::Float64: (default: 0.0) Constant reactive power demand in MVAR (Q_P)\nimpedance_active_power::Float64: (default: 0.0) Active power coefficient in MW for constant impedance load (P_Z)\nimpedance_reactive_power::Float64: (default: 0.0) Reactive power coefficient in MVAR for constant impedance load (Q_Z)\ncurrent_active_power::Float64: (default: 0.0) Active power coefficient in MW for constant current load (P_I)\ncurrent_reactive_power::Float64: (default: 0.0) Reactive power coefficient in MVAR for constant current load (Q_I)\nmax_constant_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant power load\nmax_constant_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant power load\nmax_impedance_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant impedance load\nmax_impedance_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant impedance load\nmax_current_active_power::Float64: (default: 0.0) Maximum active power (MW) drawn by constant current load\nmax_current_reactive_power::Float64: (default: 0.0) Maximum reactive power (MVAR) drawn by constant current load\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_StandardLoad/#InfrastructureSystems.get_name-Tuple{StandardLoad}","page":"StandardLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::StandardLoad) -> String\n\n\nGet StandardLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_available-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_available","text":"get_available(value::StandardLoad) -> Bool\n\n\nGet StandardLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_base_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::StandardLoad) -> Float64\n\n\nGet StandardLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_bus-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_bus","text":"get_bus(value::StandardLoad) -> ACBus\n\n\nGet StandardLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_constant_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_constant_active_power","text":"get_constant_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_constant_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_constant_reactive_power","text":"get_constant_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_current_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_current_active_power","text":"get_current_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_current_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_current_reactive_power","text":"get_current_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_dynamic_injector-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::StandardLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet StandardLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_ext-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_ext","text":"get_ext(value::StandardLoad) -> Dict{String, Any}\n\n\nGet StandardLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_impedance_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_impedance_active_power","text":"get_impedance_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_impedance_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_impedance_reactive_power","text":"get_impedance_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_constant_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_constant_active_power","text":"get_max_constant_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_constant_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_constant_reactive_power","text":"get_max_constant_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_current_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_current_active_power","text":"get_max_current_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_current_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_current_reactive_power","text":"get_max_current_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_impedance_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_impedance_active_power","text":"get_max_impedance_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_impedance_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_impedance_reactive_power","text":"get_max_impedance_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_services-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_services","text":"get_services(value::StandardLoad) -> Vector{Service}\n\n\nGet StandardLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_available!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_available!","text":"set_available!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_base_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_bus!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_constant_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_constant_active_power!","text":"set_constant_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_constant_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_constant_reactive_power!","text":"set_constant_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_current_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_current_active_power!","text":"set_current_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_current_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_current_reactive_power!","text":"set_current_reactive_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_ext!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_impedance_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_impedance_active_power!","text":"set_impedance_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_impedance_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_impedance_reactive_power!","text":"set_impedance_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_constant_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_constant_active_power!","text":"set_max_constant_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_constant_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_constant_reactive_power!","text":"set_max_constant_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_current_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_current_active_power!","text":"set_max_current_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_current_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_current_reactive_power!","text":"set_max_current_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_impedance_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_impedance_active_power!","text":"set_max_impedance_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_impedance_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_impedance_reactive_power!","text":"set_max_impedance_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_services!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_services!","text":"set_services!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#Area","page":"Area","title":"Area","text":"","category":"section"},{"location":"model_library/generated_Area/","page":"Area","title":"Area","text":"Modules = [PowerSystems]\nPages = [\"generated/Area.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Area/#PowerSystems.Area","page":"Area","title":"PowerSystems.Area","text":"mutable struct Area <: AggregationTopology\n name::String\n peak_active_power::Float64\n peak_reactive_power::Float64\n load_response::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA collection of buses for control purposes.\n\nThe Area can be specified when defining each ACBus or DCBus in the area\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\npeak_active_power::Float64: (default: 0.0) Peak active power in the area\npeak_reactive_power::Float64: (default: 0.0) Peak reactive power in the area\nload_response::Float64: (default: 0.0) Load-frequency damping parameter modeling how much the load in the area changes due to changes in frequency (MW/Hz). Example here.\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Area/#InfrastructureSystems.get_name-Tuple{Area}","page":"Area","title":"InfrastructureSystems.get_name","text":"get_name(value::Area) -> String\n\n\nGet Area name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_ext-Tuple{Area}","page":"Area","title":"PowerSystems.get_ext","text":"get_ext(value::Area) -> Dict{String, Any}\n\n\nGet Area ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_load_response-Tuple{Area}","page":"Area","title":"PowerSystems.get_load_response","text":"get_load_response(value::Area) -> Float64\n\n\nGet Area load_response.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_peak_active_power-Tuple{Area}","page":"Area","title":"PowerSystems.get_peak_active_power","text":"get_peak_active_power(value::Area) -> Any\n\n\nGet Area peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_peak_reactive_power-Tuple{Area}","page":"Area","title":"PowerSystems.get_peak_reactive_power","text":"get_peak_reactive_power(value::Area) -> Any\n\n\nGet Area peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_ext!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_ext!","text":"set_ext!(value::Area, val) -> Any\n\n\nSet Area ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_load_response!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_load_response!","text":"set_load_response!(value::Area, val) -> Any\n\n\nSet Area load_response.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_peak_active_power!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_peak_active_power!","text":"set_peak_active_power!(value::Area, val) -> Any\n\n\nSet Area peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_peak_reactive_power!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_peak_reactive_power!","text":"set_peak_reactive_power!(value::Area, val) -> Any\n\n\nSet Area peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"api/glossary/#Glossary-and-Acronyms","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"A | D | E | F | H | I | O | P | R | S | V | W | Z","category":"page"},{"location":"api/glossary/#A","page":"Glossary and Acronyms","title":"A","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"AC: Alternating current\nACE: Area control error\nAGC: Automatic generation control\nAVR: Automatic Voltage Regulator","category":"page"},{"location":"api/glossary/#D","page":"Glossary and Acronyms","title":"D","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"DC: Direct current\nDERA1:\nDynamic: Refers to data and simulations for power system transient simulations using differential equations. Common examples include signal stability analysis to verify the power system will maintain stability in the few seconds following an unexpected fault or generator trip. For contrast, see the definition for Static data.","category":"page"},{"location":"api/glossary/#E","page":"Glossary and Acronyms","title":"E","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"EMF: Electromotive force\nESAC: IEEE Type AC Excitation System model\nESDC: IEEE Type DC Excitation System model\nEXAC: IEEE Type AC Excitation System (modified) model\nEXPIC: Proportional/Integral Excitation System from PSS/E\nEXST: IEEE Type ST (Static) Excitation System model\nEX4VSA: IEEE Excitation System for Voltage Security Assessment with Over-Excitation Limits.","category":"page"},{"location":"api/glossary/#F","page":"Glossary and Acronyms","title":"F","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"Forecast: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms. See the article on Time Series Data.\nForecast window: Represents the forecasted value starting at a particular initial time. See the article on Time Series Data.","category":"page"},{"location":"api/glossary/#H","page":"Glossary and Acronyms","title":"H","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"Horizon: Is the duration of all time steps in one forecast. As of PowerSystems.jl version 4.0, all horizons in PowerSystems.jl are represented as a Dates.Period. For instance, many Day-ahead markets will have an hourly-resolution forecast for the next day, which would have a horizon of Dates.Hour(24) or Dates.Day(1). If the forecast included the next day plus a 24-hour lookahead window, the horizon would be Dates.Hour(48) or Dates.Day(2). See the article on Time Series Data.\nHVDC: High-voltage DC","category":"page"},{"location":"api/glossary/#I","page":"Glossary and Acronyms","title":"I","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"IEEET: IEEE Type I Excitation System.\nInjector or Injection: Injectors refer to models that represent how a generator or storage device injects power or current into the power system. Loads are negative injectors. In PowerSystems.jl, some components can accept data for both StaticInjection and DynamicInjection models for both static and dynamic modeling.\nInterval: The period of time between forecast initial times. In PowerSystems.jl all intervals are represented using Dates.Period types. For instance, in a Day-Ahead market simulation, the interval is usually Hour(24).\nInitial time: The first time-stamp in a forecast window. See the article on Time Series Data.\nIPC: Interconnecting power converter","category":"page"},{"location":"api/glossary/#O","page":"Glossary and Acronyms","title":"O","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"OEL: Over Excitation Limiter","category":"page"},{"location":"api/glossary/#P","page":"Glossary and Acronyms","title":"P","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"PLL: Phase-locked loop\nPSS: Power System Stabilizer\nPSSE or PSS/E: Siemens' PSS®E Power System Simulator for Engineering\nPPA: Power purchase agreement\nPSI: PowerSimulations.jl\nPSID: PowerSimulationsDynamics.jl\nPSLF: GE Vernova's Positive Sequence Load Flow Software\nPSY: PowerSystems.jl (this package)\npu or p.u.: Per-unit","category":"page"},{"location":"api/glossary/#R","page":"Glossary and Acronyms","title":"R","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"REECB1: Renewable Energy Electric Controller Type B1\nREPCA1: REPCA1: Renewable Energy Power Controller Type A1\nResolution: The period of time between each discrete value in a time series. All resolutions are represented using Dates.Period types. For instance, a Day-ahead market data set usually has a resolution of Hour(1), a Real-Time market data set usually has a resolution of Minute(5).","category":"page"},{"location":"api/glossary/#S","page":"Glossary and Acronyms","title":"S","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"SCRX: Bus Fed or Solid Fed Static Exciter\nSEXS: Simplified Excitation System model from PSS/E\nSIL: Surge impedance loading\nStates: Correspond to the set of inputs, outputs or variables, that evolve dynamically in PowerSimulationsDynamics.jl, commonly via a differential-algebraic system of equations. In PowerSystems.jl, a component associated to a DynamicInjector (for example an AVR) specifies the set of states that specific component requires to be modeled accurately.\nStatic: Typically refers to steady state data or models where the power system and each of its components are assumed to be operating at a steady state equilibrium point. This includes both power flow data for a single time point simulation as well as quasi-static time series data and models, where the power system is at an equilibrium point at each time step. Static data can be used as the input to single time point power flow models and production cost models with, for example, 5-minute, 15-minute, or 1-hour Resolution. For contrast, see the definition for Dynamic data.\nSTAB: Speed Sensitive Stabilizing PSS Model","category":"page"},{"location":"api/glossary/#V","page":"Glossary and Acronyms","title":"V","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"VSCDCLine: Voltage-Source Converter Direct Current Line\nVSM: Virtual Synchronous Machine","category":"page"},{"location":"api/glossary/#W","page":"Glossary and Acronyms","title":"W","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"Window: A forecast window is one forecast run that starts at one initial time and extends through the forecast horizon. Typically, a forecast data set contains multiple forecast windows, with sequential initial times. For example, a year-long data set of day-ahead forecasts contains 365 forecast windows","category":"page"},{"location":"api/glossary/#Z","page":"Glossary and Acronyms","title":"Z","text":"","category":"section"},{"location":"api/glossary/","page":"Glossary and Acronyms","title":"Glossary and Acronyms","text":"ZIP load: A ZIP load model accounts for the voltage-dependency of a load and is primarily used for dynamics modeling. It includes three kinds of load: constant impedance (Z), constant current (I), and constant power (P), though many dynamics models just use the constant impedance model. StandardLoad and ExponentialLoad are both ZIP load models: StandardLoad breaks up the load into each of its three components, while ExponentialLoad expresses the load as an exponential equation.","category":"page"},{"location":"tutorials/add_dynamic_data/#Adding-Data-for-Dynamic-Simulations","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"In this tutorial, we are going to add dynamic data to a power System, including a dynamic generator suitable for phasor-type simulations, as well as a dynamic inverter and dynamic lines necessary for more complex EMT (electro-magnetic transient) simulations.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"To run a dynamic simulation in Sienna\\Dyn using PowerSimulationsDynamics.jl, two data layers are required:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"A base layer of static components, which includes the data needed to run a power flow problem\nAn additional layer of dynamic components, which define differential equations to run a transient simulation","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"We'll define these two layers sequentially.","category":"page"},{"location":"tutorials/add_dynamic_data/#Defining-the-Static-Data-Layer","page":"Adding Data for Dynamic Simulations","title":"Defining the Static Data Layer","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Instead of defining the static data in the System manually, we will load an existing three-bus system using PowerSystemCaseBuilder.jl to use as a starting point.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Start by importing these packages:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"using PowerSystems\nusing PowerSystemCaseBuilder\nconst PSY = PowerSystems;","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"To create the system, load pre-existing data for a 3-bus system using PowerSystemCaseBuilder.jl:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"threebus_sys = build_system(PSIDSystems, \"3 Bus Inverter Base\")","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"See that there is a table of \"Static Components\", but no \"Dynamic\" data yet.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Let's view the generators in the system with show_components, including which bus they are connected at:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"show_components(ThermalStandard, threebus_sys, [:bus])","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that there are generators connected at Buses 2 and 3, but not Bus 1.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Now, we are going to add the data needed to run an EMT simulation. We will add an infinite voltage source to Bus 1, which is the last component we need to complete the static data layer. Then, we will a dynamic generator or inverter model to the two generators, as well as adding dynamic lines.","category":"page"},{"location":"tutorials/add_dynamic_data/#Add-an-Infinite-Voltage-Source","page":"Adding Data for Dynamic Simulations","title":"Add an Infinite Voltage Source","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Add a infinite voltage source with small impedance to Bus 1 (the reference bus). First, retrieve the reference bus using get_components:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"slack_bus = first(get_components(x -> get_bustype(x) == ACBusTypes.REF, Bus, threebus_sys))","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice we filtered by the bus type to get the bus(es) we wanted.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Next, manually define a Source:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"inf_source = Source(;\n name = \"InfBus\", #name\n available = true, #availability\n active_power = 0.0,\n reactive_power = 0.0,\n bus = slack_bus, #bus\n R_th = 0.0, #Rth\n X_th = 5e-6, #Xth\n);","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"And add it to the system:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"add_component!(threebus_sys, inf_source)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"This completes the first layer of static data, using components similar to those we added manually in the Create and Explore a Power System tutorial.","category":"page"},{"location":"tutorials/add_dynamic_data/#Adding-a-Dynamic-Generator","page":"Adding Data for Dynamic Simulations","title":"Adding a Dynamic Generator","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Now, we will connect a classic machine model to the generator at bus 102. Dynamic generator devices are composed by 5 components: a Machine, Shaft, Automatic Voltage Regulator (AVR), Power System Stabilizer (PSS), and Prime Mover and Turbine Governor. For each of those 5 components, we will select a specific model that defines the data and differential equations for that component, and then use those 5 components to define the complete dynamic generator.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"note: Note\nWhen defining dynamic data, by convention PowerSystems.jl assumes that all data is in DEVICE_BASE.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"First, define a Machine that describes the the stator electro-magnetic dynamics:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"# Create the machine\nmachine_oneDoneQ = OneDOneQMachine(;\n R = 0.0,\n Xd = 1.3125,\n Xq = 1.2578,\n Xd_p = 0.1813,\n Xq_p = 0.25,\n Td0_p = 5.89,\n Tq0_p = 0.6,\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that we selected a specific model, OneDOneQMachine, with the parameters tailored to a One-d-one-q dynamic machine model.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Next, define a specific Shaft model, SingleMass that describes the rotor electro-mechanical dynamics:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"# Shaft\nshaft_no_damping = SingleMass(;\n H = 3.01, #(M = 6.02 -> H = M/2)\n D = 0.0,\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Represent the electromotive dynamics of the AVR controller using a specific Automatic Voltage Regulator model, AVRTypeI:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"# AVR: Type I: Resembles a DC1 AVR\navr_type1 = AVRTypeI(;\n Ka = 20.0,\n Ke = 0.01,\n Kf = 0.063,\n Ta = 0.2,\n Te = 0.314,\n Tf = 0.35,\n Tr = 0.001,\n Va_lim = (min = -5.0, max = 5.0),\n Ae = 0.0039, #1st ceiling coefficient\n Be = 1.555, #2nd ceiling coefficient\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Define a fixed efficiency Prime Mover and Turbine Governor with TGFixed:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"#No TG\ntg_none = TGFixed(; efficiency = 1.0) #efficiency","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"See that we are modeling a machine that does not include a Turbine Governor (or PSS below), but you must define components for them to build a complete machine model.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Similarly, define a PSS using PSSFixed, which is used to describe the stabilization signal for the AVR:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"#No PSS\npss_none = PSSFixed(; V_pss = 0.0)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Now, we are ready to add a dynamic generator to the static generator at bus 102. First, let's get that static generator:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"static_gen = get_component(Generator, threebus_sys, \"generator-102-1\")","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that its dynamic_injector field is currently nothing.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Use its name and the 5 components above to define its DynamicGenerator model:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"dynamic_gen = DynamicGenerator(;\n name = get_name(static_gen),\n ω_ref = 1.0, # frequency reference set-point\n machine = machine_oneDoneQ,\n shaft = shaft_no_damping,\n avr = avr_type1,\n prime_mover = tg_none,\n pss = pss_none,\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"See that the specific component models that we selected and defined above were used to specify the states needed to model this generator in a dynamic simulation.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Finally, use the dynamic version of add_component! to add this data to the System:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"add_component!(threebus_sys, dynamic_gen, static_gen)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that unlike static components, which are just added to the System, this dynamic component is added to a specific static component within the System.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"tip: Tip\nTo define identical dynamic devices for multiple generators at once, define the pieces of the generator model as functions, such as:avr_type1() = AVRTypeI(...When called in the DynamicGenerator constructor, this will create a new AVR for each generator, so they are different in memory. Later, if you decide to modify the AVR parameters for a specific generator, it will not modify the AVR in another generator.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Recall that you can print the system to see a summary of its data:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"threebus_sys","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"See that a new table has been added: \"Dynamic Components.\"","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Also, print the static generator to double-check the dynamic layer has been added:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"static_gen","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Verify that dynamic_injector now contains our dynamic generator model.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Up to this point, you have added the dynamic data necessary to do a phaser-type simulation, which focuses on machine behavior. Now we will also add dynamic inverters and lines to enable EMT simulations.","category":"page"},{"location":"tutorials/add_dynamic_data/#Adding-a-Dynamic-Inverter","page":"Adding Data for Dynamic Simulations","title":"Adding a Dynamic Inverter","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Next we will connect a Virtual Synchronous Generator Inverter at bus 103.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"An inverter is composed of Converter, OuterControl, InnerControl, DCSource, FrequencyEstimator, and Filter components:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"As we did for the generator, we will define each of these six components with a specific model, which defines its differential equations.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"First, define an AverageConverter as the specific model for the Converter component:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"converter_high_power() = AverageConverter(;\n rated_voltage = 138.0,\n rated_current = 100.0,\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Recall from the tip above that we can define these components as functions instead of objects for reusability across multiple generators, and notice that that is what we have done here.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Define OuterControl using Virtual Inertia for the active power control and ReactivePowerDroop for the reactive power control:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"outer_control() = OuterControl(\n VirtualInertia(; Ta = 2.0, kd = 400.0, kω = 20.0),\n ReactivePowerDroop(; kq = 0.2, ωf = 1000.0),\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Define an InnerControl as a Voltage+Current Controller with Virtual Impedance, using VoltageModeControl:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"inner_control() = VoltageModeControl(;\n kpv = 0.59, #Voltage controller proportional gain\n kiv = 736.0, #Voltage controller integral gain\n kffv = 0.0, #Binary variable enabling voltage feed-forward in current controllers\n rv = 0.0, #Virtual resistance in pu\n lv = 0.2, #Virtual inductance in pu\n kpc = 1.27, #Current controller proportional gain\n kic = 14.3, #Current controller integral gain\n kffi = 0.0, #Binary variable enabling the current feed-forward in output of current controllers\n ωad = 50.0, #Active damping low pass filter cut-off frequency\n kad = 0.2, #Active damping gain\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Define a FixedDCSource for the DCSource:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"dc_source_lv() = FixedDCSource(; voltage = 600.0)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Define a FrequencyEstimator as a phase-locked loop (PLL) using KauraPLL:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"pll() = KauraPLL(;\n ω_lp = 500.0, #Cut-off frequency for LowPass filter of PLL filter.\n kp_pll = 0.084, #PLL proportional gain\n ki_pll = 4.69, #PLL integral gain\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Finally, define an LCLFilter for the Filter:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"filt() = LCLFilter(;\n lf = 0.08,\n rf = 0.003,\n cf = 0.074,\n lg = 0.2,\n rg = 0.01,\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Now, use those six functions to define a complete dynamic inverter by getting the static component at bus 103:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"gen_103 = get_component(Generator, threebus_sys, \"generator-103-1\");","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"using it and our six functions to define a DynamicInverter:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"dynamic_inv = DynamicInverter(;\n name = get_name(gen_103),\n ω_ref = 1.0, # frequency reference set-point\n converter = converter_high_power(),\n outer_control = outer_control(),\n inner_control = inner_control(),\n dc_source = dc_source_lv(),\n freq_estimator = pll(),\n filter = filt(),\n)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"and adding it to the System:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"add_component!(threebus_sys, dynamic_inv, gen_103)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Both generators have now been updated with dynamic data. Let's complete the System updates by adding dynamic lines.","category":"page"},{"location":"tutorials/add_dynamic_data/#Adding-Dynamic-Lines","page":"Adding Data for Dynamic Simulations","title":"Adding Dynamic Lines","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"warning: Warning\nA System must have at least two buses and one branch to run a dynamic simulation in PowerSimulationsDynamics.jl.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Let's review the AC branches currently in the system:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"get_components(ACBranch, threebus_sys)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that we have three static Line components.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Let's also print the first line to review its format:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"first(get_components(Line, threebus_sys))","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"See that these components do not have the fields for dynamic modeling, such as fields for different states.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Let's update that by cycling through these lines and using DynamicBranch to extend each static line with the necessary fields:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"for l in get_components(Line, threebus_sys)\n # create a dynamic branch\n dyn_branch = DynamicBranch(l)\n # add dynamic branch to the system, replacing the static branch\n add_component!(threebus_sys, dyn_branch)\nend","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Take a look at the AC branches in the system again:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"branches = get_components(ACBranch, threebus_sys)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Notice that now there are 3 DynamicBranch components instead the Line components.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Let's take a look by printing first one:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"first(branches)","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Observe that this is a wrapper around the static data, with the additional states data for dynamic modeling.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Finally, let's print the System again to summarize our additions:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"threebus_sys","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Verify that the additions were successful, with an added voltage Source, DynamicBranches replacing the static Lines, and two new dynamic components with the generator and inverter models.","category":"page"},{"location":"tutorials/add_dynamic_data/#Next-Steps","page":"Adding Data for Dynamic Simulations","title":"Next Steps","text":"","category":"section"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"In this tutorial, you have updated a static system with a second dynamic data layer. The data you added can enable a phasor-based simulation using the dynamic generator, or a more complex EMT simulation with the additional dynamic inverter and dynamic lines.","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Next, you might like to:","category":"page"},{"location":"tutorials/add_dynamic_data/","page":"Adding Data for Dynamic Simulations","title":"Adding Data for Dynamic Simulations","text":"Read more about the static and dynamic data layers and the dynamic data format in Dynamic Devices.\nReview the specific sub-system models available in PowerSystems.jl for Machine, Shaft, AVR, PSS, Prime Mover and Turbine Governor, Converter, OuterControl, InnerControl, DCSource, FrequencyEstimator, and Filter components\nExplore PowerSimulationsDynamics.jl for dynamics modeling in Sienna\\Dyn","category":"page"},{"location":"model_library/generated_ThermalStandard/#ThermalStandard","page":"ThermalStandard","title":"ThermalStandard","text":"","category":"section"},{"location":"model_library/generated_ThermalStandard/","page":"ThermalStandard","title":"ThermalStandard","text":"Modules = [PowerSystems]\nPages = [\"generated/ThermalStandard.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.ThermalStandard","page":"ThermalStandard","title":"PowerSystems.ThermalStandard","text":"mutable struct ThermalStandard <: ThermalGen\n name::String\n available::Bool\n status::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n operation_cost::Union{ThermalGenerationCost, MarketBidCost}\n base_power::Float64\n time_limits::Union{Nothing, UpDown}\n must_run::Bool\n prime_mover_type::PrimeMovers\n fuel::ThermalFuels\n services::Vector{Service}\n time_at_status::Float64\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA thermal generator, such as a fossil fuel and nuclear generator.\n\nThis is a standard representation with options to include a minimum up time, minimum down time, and ramp limits. For a more detailed representation the start-up and shut-down processes, including hot starts, see ThermalMultiStart\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nstatus::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used, validation range: active_power_limits\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)\noperation_cost::Union{ThermalGenerationCost, MarketBidCost}: OperationalCost of generation\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\ntime_limits::Union{Nothing, UpDown}: (default: nothing) Minimum up and Minimum down time limits in hours, validation range: (0, nothing)\nmust_run::Bool: (default: false) Set to true if the unit is must run\nprime_mover_type::PrimeMovers: (default: PrimeMovers.OT) Prime mover technology according to EIA 923. Options are listed here\nfuel::ThermalFuels: (default: ThermalFuels.OTHER) Prime mover fuel according to EIA 923. Options are listed here\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ntime_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ThermalStandard/#InfrastructureSystems.get_name-Tuple{ThermalStandard}","page":"ThermalStandard","title":"InfrastructureSystems.get_name","text":"get_name(value::ThermalStandard) -> String\n\n\nGet ThermalStandard name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_active_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_active_power","text":"get_active_power(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_active_power_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::ThermalStandard\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet ThermalStandard active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_available-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_available","text":"get_available(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_base_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_base_power","text":"get_base_power(value::ThermalStandard) -> Float64\n\n\nGet ThermalStandard base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_bus-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_bus","text":"get_bus(value::ThermalStandard) -> ACBus\n\n\nGet ThermalStandard bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_dynamic_injector-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::ThermalStandard\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ThermalStandard dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_ext-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_ext","text":"get_ext(value::ThermalStandard) -> Dict{String, Any}\n\n\nGet ThermalStandard ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_fuel-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_fuel","text":"get_fuel(value::ThermalStandard) -> ThermalFuels\n\n\nGet ThermalStandard fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_must_run-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_must_run","text":"get_must_run(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_operation_cost-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::ThermalStandard\n) -> Union{MarketBidCost, ThermalGenerationCost}\n\n\nGet ThermalStandard operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_prime_mover_type-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::ThermalStandard) -> PrimeMovers\n\n\nGet ThermalStandard prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_ramp_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::ThermalStandard\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet ThermalStandard ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_rating-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_rating","text":"get_rating(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_reactive_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_reactive_power_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::ThermalStandard\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet ThermalStandard reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_services-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_services","text":"get_services(value::ThermalStandard) -> Vector{Service}\n\n\nGet ThermalStandard services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_status-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_status","text":"get_status(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_time_at_status-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::ThermalStandard) -> Float64\n\n\nGet ThermalStandard time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_time_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::ThermalStandard\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet ThermalStandard time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_active_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_active_power_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_available!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_available!","text":"set_available!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_base_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_bus!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_bus!","text":"set_bus!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_ext!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_ext!","text":"set_ext!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_fuel!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_fuel!","text":"set_fuel!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_must_run!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_must_run!","text":"set_must_run!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_operation_cost!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_prime_mover_type!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_ramp_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_rating!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_rating!","text":"set_rating!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_reactive_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_reactive_power_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::ThermalStandard,\n val\n) -> Any\n\n\nSet ThermalStandard reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_services!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_services!","text":"set_services!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_status!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_status!","text":"set_status!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_time_at_status!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_time_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#VariableReserveNonSpinning","page":"VariableReserveNonSpinning","title":"VariableReserveNonSpinning","text":"","category":"section"},{"location":"model_library/generated_VariableReserveNonSpinning/","page":"VariableReserveNonSpinning","title":"VariableReserveNonSpinning","text":"Modules = [PowerSystems]\nPages = [\"generated/VariableReserveNonSpinning.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.VariableReserveNonSpinning","page":"VariableReserveNonSpinning","title":"PowerSystems.VariableReserveNonSpinning","text":"mutable struct VariableReserveNonSpinning <: ReserveNonSpinning\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA non-spinning reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.\n\nThis reserve product includes back-up generators that might not be currently synchronized with the power system, but can come online quickly after an unexpected contingency, such as a transmission line or generator outage. To model the time varying requirement, a \"requirement\" time series should be added to this reserve.\n\nThis is only an upwards reserve. For faster-responding upwards or downwards reserves from components already synchronized with the system, see VariableReserve\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)\nrequirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData\nsustained_time::Float64: (default: 14400.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)\nmax_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)\nmax_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)\ndeployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_VariableReserveNonSpinning/#InfrastructureSystems.get_name-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"InfrastructureSystems.get_name","text":"get_name(value::VariableReserveNonSpinning) -> String\n\n\nGet VariableReserveNonSpinning name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_available-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_available","text":"get_available(value::VariableReserveNonSpinning) -> Bool\n\n\nGet VariableReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_deployed_fraction-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_ext-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_ext","text":"get_ext(\n value::VariableReserveNonSpinning\n) -> Dict{String, Any}\n\n\nGet VariableReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_max_output_fraction-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_max_participation_factor-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_requirement-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_requirement","text":"get_requirement(value::VariableReserveNonSpinning) -> Any\n\n\nGet VariableReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_sustained_time-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_time_frame-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::VariableReserveNonSpinning) -> Float64\n\n\nGet VariableReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_available!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_available!","text":"set_available!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_deployed_fraction!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_ext!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_ext!","text":"set_ext!(value::VariableReserveNonSpinning, val) -> Any\n\n\nSet VariableReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_max_output_fraction!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_max_participation_factor!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_requirement!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_requirement!","text":"set_requirement!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_sustained_time!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_time_frame!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#Converter","page":"Converter","title":"Converter","text":"","category":"section"},{"location":"model_library/generated_Converter/#AverageConverter","page":"Converter","title":"AverageConverter","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/AverageConverter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.AverageConverter","page":"Converter","title":"PowerSystems.AverageConverter","text":"mutable struct AverageConverter <: Converter\n rated_voltage::Float64\n rated_current::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an average converter model\n\nArguments\n\nrated_voltage::Float64: Rated voltage (V), validation range: (0, nothing)\nrated_current::Float64: Rated current (A), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) AverageConverter has no states\nn_states::Int: (Do not modify.) AverageConverter has no states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(value::AverageConverter) -> Dict{String, Any}\n\n\nGet AverageConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(value::AverageConverter) -> Int64\n\n\nGet AverageConverter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_rated_current-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_rated_current","text":"get_rated_current(value::AverageConverter) -> Float64\n\n\nGet AverageConverter rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_rated_voltage-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_rated_voltage","text":"get_rated_voltage(value::AverageConverter) -> Float64\n\n\nGet AverageConverter rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(value::AverageConverter) -> Vector{Symbol}\n\n\nGet AverageConverter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_rated_current!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_rated_current!","text":"set_rated_current!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_rated_voltage!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_rated_voltage!","text":"set_rated_voltage!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#RenewableEnergyConverterTypeA","page":"Converter","title":"RenewableEnergyConverterTypeA","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/RenewableEnergyConverterTypeA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.RenewableEnergyConverterTypeA","page":"Converter","title":"PowerSystems.RenewableEnergyConverterTypeA","text":"mutable struct RenewableEnergyConverterTypeA <: Converter\n T_g::Float64\n Rrpwr::Float64\n Brkpt::Float64\n Zerox::Float64\n Lvpl1::Float64\n Vo_lim::Float64\n Lv_pnts::MinMax\n Io_lim::Float64\n T_fltr::Float64\n K_hv::Float64\n Iqr_lims::MinMax\n Accel::Float64\n Lvpl_sw::Int\n Q_ref::Float64\n R_source::Float64\n X_source::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE\n\nArguments\n\nT_g::Float64: Converter time constant (s), validation range: (0, nothing)\nRrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)\nBrkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)\nZerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)\nLvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)\nVo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)\nLv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)\nIo_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)\nT_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)\nK_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)\nIqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)\nAccel::Float64: Acceleration factor, validation range: (0, 1)\nLvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)\nQ_ref::Float64: (default: 1.0) Initial condition of reactive power from power flow, validation range: (0, nothing)\nR_source::Float64: (default: 0.0) Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)\nX_source::Float64: (default: 1.0e5) Output reactance used for the Thevenin Equivalent, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\tIp: Converter lag for Ipcmd,\tIq: Converter lag for Iqcmd,\tVmeas: Voltage filter for low voltage active current management\nn_states::Int: (Do not modify.) RenewableEnergyConverterTypeA has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_Accel-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Accel","text":"get_Accel(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Brkpt-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Brkpt","text":"get_Brkpt(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Io_lim-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Io_lim","text":"get_Io_lim(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Iqr_lims-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Iqr_lims","text":"get_Iqr_lims(\n value::RenewableEnergyConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_K_hv-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_K_hv","text":"get_K_hv(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lv_pnts-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lv_pnts","text":"get_Lv_pnts(\n value::RenewableEnergyConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl1-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl1","text":"get_Lvpl1(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl_sw-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl_sw","text":"get_Lvpl_sw(value::RenewableEnergyConverterTypeA) -> Int64\n\n\nGet RenewableEnergyConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Q_ref-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_R_source-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_R_source","text":"get_R_source(\n value::RenewableEnergyConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyConverterTypeA R_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Rrpwr-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Rrpwr","text":"get_Rrpwr(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_fltr-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_fltr","text":"get_T_fltr(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_g-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_g","text":"get_T_g(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Vo_lim-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Vo_lim","text":"get_Vo_lim(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_X_source-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_X_source","text":"get_X_source(\n value::RenewableEnergyConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyConverterTypeA X_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Zerox-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Zerox","text":"get_Zerox(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(\n value::RenewableEnergyConverterTypeA\n) -> Dict{String, Any}\n\n\nGet RenewableEnergyConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(value::RenewableEnergyConverterTypeA) -> Int64\n\n\nGet RenewableEnergyConverterTypeA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(\n value::RenewableEnergyConverterTypeA\n) -> Vector{Symbol}\n\n\nGet RenewableEnergyConverterTypeA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Accel!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Accel!","text":"set_Accel!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Brkpt!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Brkpt!","text":"set_Brkpt!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Io_lim!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Io_lim!","text":"set_Io_lim!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Iqr_lims!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Iqr_lims!","text":"set_Iqr_lims!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_K_hv!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_K_hv!","text":"set_K_hv!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lv_pnts!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lv_pnts!","text":"set_Lv_pnts!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl1!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl1!","text":"set_Lvpl1!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl_sw!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl_sw!","text":"set_Lvpl_sw!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Q_ref!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_R_source!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_R_source!","text":"set_R_source!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA R_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Rrpwr!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Rrpwr!","text":"set_Rrpwr!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_fltr!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_fltr!","text":"set_T_fltr!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_g!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_g!","text":"set_T_g!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Vo_lim!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Vo_lim!","text":"set_Vo_lim!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_X_source!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_X_source!","text":"set_X_source!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA X_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Zerox!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Zerox!","text":"set_Zerox!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#RenewableEnergyVoltageConverterTypeA","page":"Converter","title":"RenewableEnergyVoltageConverterTypeA","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/RenewableEnergyVoltageConverterTypeA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.RenewableEnergyVoltageConverterTypeA","page":"Converter","title":"PowerSystems.RenewableEnergyVoltageConverterTypeA","text":"mutable struct RenewableEnergyVoltageConverterTypeA <: Converter\n T_g::Float64\n Rrpwr::Float64\n Brkpt::Float64\n Zerox::Float64\n Lvpl1::Float64\n Vo_lim::Float64\n Lv_pnts::MinMax\n Io_lim::Float64\n T_fltr::Float64\n K_hv::Float64\n Iqr_lims::MinMax\n Accel::Float64\n Lvpl_sw::Int\n Q_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE, but to be interfaced using a Voltage Source instead of a Current Source\n\nArguments\n\nT_g::Float64: Converter time constant (s), validation range: (0, nothing)\nRrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)\nBrkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)\nZerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)\nLvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)\nVo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)\nLv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)\nIo_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)\nT_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)\nK_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)\nIqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)\nAccel::Float64: Acceleration factor, validation range: (0, 1)\nLvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)\nQ_ref::Float64: (default: 1.0) Initial condition of reactive power from power flow, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\tIp: Converter lag for Ipcmd,\tIq: Converter lag for Iqcmd,\tVmeas: Voltage filter for low voltage active current management\nn_states::Int: (Do not modify.) RenewableEnergyVoltageConverterTypeA has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_Accel-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Accel","text":"get_Accel(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Brkpt-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Brkpt","text":"get_Brkpt(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Io_lim-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Io_lim","text":"get_Io_lim(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Iqr_lims-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Iqr_lims","text":"get_Iqr_lims(\n value::RenewableEnergyVoltageConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyVoltageConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_K_hv-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_K_hv","text":"get_K_hv(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lv_pnts-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lv_pnts","text":"get_Lv_pnts(\n value::RenewableEnergyVoltageConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyVoltageConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl1-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl1","text":"get_Lvpl1(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl_sw-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl_sw","text":"get_Lvpl_sw(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Int64\n\n\nGet RenewableEnergyVoltageConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Q_ref-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Rrpwr-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Rrpwr","text":"get_Rrpwr(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_fltr-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_fltr","text":"get_T_fltr(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_g-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_g","text":"get_T_g(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Vo_lim-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Vo_lim","text":"get_Vo_lim(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Zerox-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Zerox","text":"get_Zerox(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Dict{String, Any}\n\n\nGet RenewableEnergyVoltageConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Int64\n\n\nGet RenewableEnergyVoltageConverterTypeA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Vector{Symbol}\n\n\nGet RenewableEnergyVoltageConverterTypeA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Accel!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Accel!","text":"set_Accel!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Brkpt!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Brkpt!","text":"set_Brkpt!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Io_lim!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Io_lim!","text":"set_Io_lim!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Iqr_lims!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Iqr_lims!","text":"set_Iqr_lims!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_K_hv!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_K_hv!","text":"set_K_hv!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lv_pnts!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lv_pnts!","text":"set_Lv_pnts!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl1!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl1!","text":"set_Lvpl1!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl_sw!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl_sw!","text":"set_Lvpl_sw!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Q_ref!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Rrpwr!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Rrpwr!","text":"set_Rrpwr!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_fltr!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_fltr!","text":"set_T_fltr!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_g!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_g!","text":"set_T_g!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Vo_lim!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Vo_lim!","text":"set_Vo_lim!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Zerox!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Zerox!","text":"set_Zerox!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#AggregateDistributedGenerationA","page":"AggregateDistributedGenerationA","title":"AggregateDistributedGenerationA","text":"","category":"section"},{"location":"model_library/generated_AggregateDistributedGenerationA/","page":"AggregateDistributedGenerationA","title":"AggregateDistributedGenerationA","text":"Modules = [PowerSystems]\nPages = [\"generated/AggregateDistributedGenerationA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.AggregateDistributedGenerationA","page":"AggregateDistributedGenerationA","title":"PowerSystems.AggregateDistributedGenerationA","text":"mutable struct AggregateDistributedGenerationA <: DynamicInjection\n name::String\n Pf_Flag::Int\n Freq_Flag::Int\n PQ_Flag::Int\n Gen_Flag::Int\n Vtrip_Flag::Int\n Ftrip_Flag::Int\n T_rv::Float64\n Trf::Float64\n dbd_pnts::Tuple{Float64, Float64}\n K_qv::Float64\n Tp::Float64\n T_iq::Float64\n D_dn::Float64\n D_up::Float64\n fdbd_pnts::Tuple{Float64, Float64}\n fe_lim::MinMax\n P_lim::MinMax\n dP_lim::MinMax\n Tpord::Float64\n Kpg::Float64\n Kig::Float64\n I_max::Float64\n vl_pnts::Vector{Tuple{Float64,Float64}}\n vh_pnts::Vector{Tuple{Float64,Float64}}\n Vrfrac::Float64\n fl::Float64\n fh::Float64\n tfl::Float64\n tfh::Float64\n Tg::Float64\n rrpwr::Float64\n Tv::Float64\n Vpr::Float64\n Iq_lim::MinMax\n V_ref::Float64\n Pfa_ref::Float64\n ω_ref::Float64\n Q_ref::Float64\n P_ref::Float64\n base_power::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of the DERA1 model in PSS/E\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nPf_Flag::Int: Flag for Power Factor Control, validation range: (0, 1)\nFreq_Flag::Int: Flag to enable/disable frequency control, validation range: (0, 1)\nPQ_Flag::Int: Flag used to enforce maximum current, validation range: (0, 1)\nGen_Flag::Int: Flag to specify generator or storage, validation range: (0, 1)\nVtrip_Flag::Int: Flag to enable/disable voltage trip logic, validation range: (0, 1)\nFtrip_Flag::Int: Flag to enable/disable frequency trip logic, validation range: (0, 1)\nT_rv::Float64: Voltage measurement transducer time constant, validation range: (0, nothing)\nTrf::Float64: Frequency measurement transducer time constant, validation range: (0, nothing)\ndbd_pnts::Tuple{Float64, Float64}: Voltage deadband thresholds (dbd1, dbd2)\nK_qv::Float64: Proportional voltage control gain (pu), validation range: (0, nothing)\nTp::Float64: Power measurement transducer time constant, validation range: (0, nothing)\nT_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)\nD_dn::Float64: Reciprocal of droop for over-frequency conditions (>0) (pu), validation range: (0, nothing)\nD_up::Float64: Reciprocal of droop for under-frequency conditions <=0) (pu), validation range: (0, nothing)\nfdbd_pnts::Tuple{Float64, Float64}: Frequency control deadband thresholds (fdbd1, fdbd2)\nfe_lim::MinMax: Frequency error limits (femin, femax)\nP_lim::MinMax: Power limits (Pmin, Pmax)\ndP_lim::MinMax: Power reference ramp rate limits (dPmin, dPmax)\nTpord::Float64: Power filter time constant, validation range: (0, nothing)\nKpg::Float64: PI controller proportional gain (pu), validation range: (0, nothing)\nKig::Float64: PI controller integral gain (pu), validation range: (0, nothing)\nI_max::Float64: Maximum limit on total converter current (pu), validation range: (0, nothing)\nvl_pnts::Vector{Tuple{Float64,Float64}}: Low voltage cutout points [(tv10, vl0), (tv11, vl1)]\nvh_pnts::Vector{Tuple{Float64,Float64}}: High voltage cutout points [(tvh0, vh0), (tvh1, vh1)]\nVrfrac::Float64: Fraction of device that recovers after voltage comes back to within vl1 < V < vh1 (0 <= Vrfrac <= 1), validation range: (0, 1)\nfl::Float64: Inverter frequency break-point for low frequency cut-out (Hz), validation range: (0, nothing)\nfh::Float64: Inverter frequency break-point for high frequency cut-out (Hz), validation range: (0, nothing)\ntfl::Float64: Low frequency cut-out timer corresponding to frequency fl (s), validation range: (0, nothing)\ntfh::Float64: High frequency cut-out timer corresponding to frequency fh (s), validation range: (0, nothing)\nTg::Float64: Current control time constant (to represent behavior of inner control loops) (> 0) (s), validation range: (0, nothing)\nrrpwr::Float64: Ramp rate for real power increase following a fault (pu/s), validation range: (0, nothing)\nTv::Float64: Time constant on the output of the multiplier (s), validation range: (0, nothing)\nVpr::Float64: Voltage below which frequency tripping is disabled (pu), validation range: (0, nothing)\nIq_lim::MinMax: Reactive current injection limits (Iqll, Iqhl)\nV_ref::Float64: (default: 1.0) User defined voltage reference. If 0, PowerSimulationsDynamics.jl initializes to initial terminal voltage, validation range: (0, nothing)\nPfa_ref::Float64: (default: 0.0) Reference power factor, validation range: (0, nothing)\nω_ref::Float64: (default: 1.0) Reference Frequency (pu), validation range: (0, nothing)\nQ_ref::Float64: (default: 0.0) Reference reactive power, in pu, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference active power, in pu, validation range: (0, nothing)\nbase_power::Float64: (default: 100.0) Base power (MVA) for per unitization\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of AggregateDistributedGenerationA depends on the Flags\nn_states::Int: (Do not modify.) The states of AggregateDistributedGenerationA depends on the Flags\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AggregateDistributedGenerationA/#InfrastructureSystems.get_name-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"InfrastructureSystems.get_name","text":"get_name(value::AggregateDistributedGenerationA) -> String\n\n\nGet AggregateDistributedGenerationA name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_D_dn-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_D_dn","text":"get_D_dn(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_D_up-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_D_up","text":"get_D_up(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Freq_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Freq_Flag","text":"get_Freq_Flag(\n value::AggregateDistributedGenerationA\n) -> Int64\n\n\nGet AggregateDistributedGenerationA Freq_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Ftrip_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Ftrip_Flag","text":"get_Ftrip_Flag(\n value::AggregateDistributedGenerationA\n) -> Int64\n\n\nGet AggregateDistributedGenerationA Ftrip_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Gen_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Gen_Flag","text":"get_Gen_Flag(\n value::AggregateDistributedGenerationA\n) -> Int64\n\n\nGet AggregateDistributedGenerationA Gen_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_I_max-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_I_max","text":"get_I_max(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Iq_lim-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Iq_lim","text":"get_Iq_lim(\n value::AggregateDistributedGenerationA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AggregateDistributedGenerationA Iq_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_K_qv-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_K_qv","text":"get_K_qv(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Kig-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Kig","text":"get_Kig(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Kig.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Kpg-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Kpg","text":"get_Kpg(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Kpg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_PQ_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_PQ_Flag","text":"get_PQ_Flag(value::AggregateDistributedGenerationA) -> Int64\n\n\nGet AggregateDistributedGenerationA PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_P_lim-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_P_lim","text":"get_P_lim(\n value::AggregateDistributedGenerationA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AggregateDistributedGenerationA P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_P_ref-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Pf_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Pf_Flag","text":"get_Pf_Flag(value::AggregateDistributedGenerationA) -> Int64\n\n\nGet AggregateDistributedGenerationA Pf_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Pfa_ref-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Pfa_ref","text":"get_Pfa_ref(\n value::AggregateDistributedGenerationA\n) -> Float64\n\n\nGet AggregateDistributedGenerationA Pfa_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Q_ref-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_T_iq-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_T_iq","text":"get_T_iq(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_T_rv-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_T_rv","text":"get_T_rv(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Tg-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Tg","text":"get_Tg(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Tp-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Tp","text":"get_Tp(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Tp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Tpord-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Tpord","text":"get_Tpord(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Tpord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Trf-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Trf","text":"get_Trf(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Trf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Tv-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Tv","text":"get_Tv(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Tv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_V_ref-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Vpr-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Vpr","text":"get_Vpr(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA Vpr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Vrfrac-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Vrfrac","text":"get_Vrfrac(\n value::AggregateDistributedGenerationA\n) -> Float64\n\n\nGet AggregateDistributedGenerationA Vrfrac.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_Vtrip_Flag-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_Vtrip_Flag","text":"get_Vtrip_Flag(\n value::AggregateDistributedGenerationA\n) -> Int64\n\n\nGet AggregateDistributedGenerationA Vtrip_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_base_power-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_base_power","text":"get_base_power(\n value::AggregateDistributedGenerationA\n) -> Float64\n\n\nGet AggregateDistributedGenerationA base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_dP_lim-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_dP_lim","text":"get_dP_lim(\n value::AggregateDistributedGenerationA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AggregateDistributedGenerationA dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_dbd_pnts-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_dbd_pnts","text":"get_dbd_pnts(\n value::AggregateDistributedGenerationA\n) -> Tuple{Float64, Float64}\n\n\nGet AggregateDistributedGenerationA dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_ext-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_ext","text":"get_ext(\n value::AggregateDistributedGenerationA\n) -> Dict{String, Any}\n\n\nGet AggregateDistributedGenerationA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_fdbd_pnts-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_fdbd_pnts","text":"get_fdbd_pnts(\n value::AggregateDistributedGenerationA\n) -> Tuple{Float64, Float64}\n\n\nGet AggregateDistributedGenerationA fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_fe_lim-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_fe_lim","text":"get_fe_lim(\n value::AggregateDistributedGenerationA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AggregateDistributedGenerationA fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_fh-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_fh","text":"get_fh(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA fh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_fl-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_fl","text":"get_fl(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA fl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_n_states-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_n_states","text":"get_n_states(\n value::AggregateDistributedGenerationA\n) -> Int64\n\n\nGet AggregateDistributedGenerationA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_rrpwr-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_rrpwr","text":"get_rrpwr(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_states-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_states","text":"get_states(\n value::AggregateDistributedGenerationA\n) -> Vector{Symbol}\n\n\nGet AggregateDistributedGenerationA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_tfh-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_tfh","text":"get_tfh(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA tfh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_tfl-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_tfl","text":"get_tfl(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA tfl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_vh_pnts-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_vh_pnts","text":"get_vh_pnts(\n value::AggregateDistributedGenerationA\n) -> Vector{Tuple{Float64, Float64}}\n\n\nGet AggregateDistributedGenerationA vh_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_vl_pnts-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_vl_pnts","text":"get_vl_pnts(\n value::AggregateDistributedGenerationA\n) -> Vector{Tuple{Float64, Float64}}\n\n\nGet AggregateDistributedGenerationA vl_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.get_ω_ref-Tuple{AggregateDistributedGenerationA}","page":"AggregateDistributedGenerationA","title":"PowerSystems.get_ω_ref","text":"get_ω_ref(value::AggregateDistributedGenerationA) -> Float64\n\n\nGet AggregateDistributedGenerationA ω_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_D_dn!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_D_dn!","text":"set_D_dn!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_D_up!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_D_up!","text":"set_D_up!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Freq_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Freq_Flag!","text":"set_Freq_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Freq_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Ftrip_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Ftrip_Flag!","text":"set_Ftrip_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Ftrip_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Gen_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Gen_Flag!","text":"set_Gen_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Gen_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_I_max!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_I_max!","text":"set_I_max!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Iq_lim!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Iq_lim!","text":"set_Iq_lim!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Iq_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_K_qv!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_K_qv!","text":"set_K_qv!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Kig!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Kig!","text":"set_Kig!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Kig.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Kpg!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Kpg!","text":"set_Kpg!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Kpg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_PQ_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_PQ_Flag!","text":"set_PQ_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_P_lim!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_P_lim!","text":"set_P_lim!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_P_ref!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Pf_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Pf_Flag!","text":"set_Pf_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Pf_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Pfa_ref!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Pfa_ref!","text":"set_Pfa_ref!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Pfa_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Q_ref!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_T_iq!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_T_iq!","text":"set_T_iq!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_T_rv!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_T_rv!","text":"set_T_rv!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Tg!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Tg!","text":"set_Tg!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Tp!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Tp!","text":"set_Tp!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Tp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Tpord!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Tpord!","text":"set_Tpord!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Tpord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Trf!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Trf!","text":"set_Trf!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Trf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Tv!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Tv!","text":"set_Tv!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Tv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_V_ref!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Vpr!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Vpr!","text":"set_Vpr!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA Vpr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Vrfrac!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Vrfrac!","text":"set_Vrfrac!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Vrfrac.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_Vtrip_Flag!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_Vtrip_Flag!","text":"set_Vtrip_Flag!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA Vtrip_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_base_power!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_base_power!","text":"set_base_power!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_dP_lim!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_dP_lim!","text":"set_dP_lim!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_dbd_pnts!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_dbd_pnts!","text":"set_dbd_pnts!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_ext!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_ext!","text":"set_ext!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_fdbd_pnts!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_fdbd_pnts!","text":"set_fdbd_pnts!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_fe_lim!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_fe_lim!","text":"set_fe_lim!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_fh!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_fh!","text":"set_fh!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA fh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_fl!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_fl!","text":"set_fl!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA fl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_rrpwr!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_rrpwr!","text":"set_rrpwr!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_tfh!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_tfh!","text":"set_tfh!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA tfh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_tfl!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_tfl!","text":"set_tfl!(value::AggregateDistributedGenerationA, val) -> Any\n\n\nSet AggregateDistributedGenerationA tfl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_vh_pnts!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_vh_pnts!","text":"set_vh_pnts!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA vh_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_vl_pnts!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_vl_pnts!","text":"set_vl_pnts!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA vl_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AggregateDistributedGenerationA/#PowerSystems.set_ω_ref!-Tuple{AggregateDistributedGenerationA, Any}","page":"AggregateDistributedGenerationA","title":"PowerSystems.set_ω_ref!","text":"set_ω_ref!(\n value::AggregateDistributedGenerationA,\n val\n) -> Any\n\n\nSet AggregateDistributedGenerationA ω_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PhaseShiftingTransformer","page":"PhaseShiftingTransformer","title":"PhaseShiftingTransformer","text":"","category":"section"},{"location":"model_library/generated_PhaseShiftingTransformer/","page":"PhaseShiftingTransformer","title":"PhaseShiftingTransformer","text":"Modules = [PowerSystems]\nPages = [\"generated/PhaseShiftingTransformer.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.PhaseShiftingTransformer","page":"PhaseShiftingTransformer","title":"PowerSystems.PhaseShiftingTransformer","text":"mutable struct PhaseShiftingTransformer <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n tap::Float64\n α::Float64\n rating::Union{Nothing, Float64}\n phase_angle_limits::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA phase-shifting transformer regulating the phase angle between two buses to control active power flow in the system.\n\nThe model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow through the transformer (MW)\nreactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)\narc::Arc: An Arc defining this transformer from a bus to another bus\nr::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)\nx::Float64: Reactance in pu (SYSTEM_BASE), validation range: (-2, 4)\nprimary_shunt::Float64:, validation range: (0, 2)\ntap::Float64: Normalized tap changer position for voltage control, varying between 0 and 2, with 1 centered at the nominal voltage, validation range: (0, 2)\nα::Float64: Initial condition of phase shift (radians) between the from and to buses , validation range: (-1.571, 1.571)\nrating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)\nphase_angle_limits::MinMax: (default: (min=-1.571, max=1.571)) Minimum and maximum phase angle limits (radians), validation range: (-1.571, 1.571)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PhaseShiftingTransformer/#InfrastructureSystems.get_name-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"InfrastructureSystems.get_name","text":"get_name(value::PhaseShiftingTransformer) -> String\n\n\nGet PhaseShiftingTransformer name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_active_power_flow-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(\n value::PhaseShiftingTransformer\n) -> Any\n\n\nGet PhaseShiftingTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_arc-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_arc","text":"get_arc(value::PhaseShiftingTransformer) -> Arc\n\n\nGet PhaseShiftingTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_available-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_available","text":"get_available(value::PhaseShiftingTransformer) -> Bool\n\n\nGet PhaseShiftingTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_ext-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_ext","text":"get_ext(\n value::PhaseShiftingTransformer\n) -> Dict{String, Any}\n\n\nGet PhaseShiftingTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_phase_angle_limits-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_phase_angle_limits","text":"get_phase_angle_limits(\n value::PhaseShiftingTransformer\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet PhaseShiftingTransformer phase_angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_primary_shunt-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(\n value::PhaseShiftingTransformer\n) -> Float64\n\n\nGet PhaseShiftingTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_r-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_r","text":"get_r(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_rating-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_rating","text":"get_rating(value::PhaseShiftingTransformer) -> Any\n\n\nGet PhaseShiftingTransformer rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_reactive_power_flow-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(\n value::PhaseShiftingTransformer\n) -> Any\n\n\nGet PhaseShiftingTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_services-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_services","text":"get_services(\n value::PhaseShiftingTransformer\n) -> Vector{Service}\n\n\nGet PhaseShiftingTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_tap-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_tap","text":"get_tap(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_x-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_x","text":"get_x(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_α-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_α","text":"get_α(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_active_power_flow!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_arc!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_arc!","text":"set_arc!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_available!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_available!","text":"set_available!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_ext!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_ext!","text":"set_ext!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_phase_angle_limits!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_phase_angle_limits!","text":"set_phase_angle_limits!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer phase_angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_primary_shunt!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_r!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_r!","text":"set_r!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_rating!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_rating!","text":"set_rating!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_reactive_power_flow!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_services!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_services!","text":"set_services!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_tap!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_tap!","text":"set_tap!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_x!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_x!","text":"set_x!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_α!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_α!","text":"set_α!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer α.\n\n\n\n\n\n","category":"method"},{"location":"explanation/system/#system_doc","page":"System","title":"System","text":"","category":"section"},{"location":"explanation/system/","page":"System","title":"System","text":"The System is the main container of components and the time series data references. PowerSystems.jl uses a hybrid approach to data storage, where the component data and time series references are stored in volatile memory while the actual time series data is stored in an HDF5 file. This design loads into memory the portions of the data that are relevant at time of the query, and so avoids overwhelming the memory resources.","category":"page"},{"location":"explanation/system/","page":"System","title":"System","text":"","category":"page"},{"location":"explanation/system/#Accessing-components-stored-in-the-System","page":"System","title":"Accessing components stored in the System","text":"","category":"section"},{"location":"explanation/system/","page":"System","title":"System","text":"PowerSystems.jl implements a wide variety of methods to search for components to aid in data manipulation. Most of these use the Type Structure to retrieve all components of a certain Type.","category":"page"},{"location":"explanation/system/","page":"System","title":"System","text":"For example, the most common search function is get_components, which takes a desired device Type (concrete or abstract) and retrieves all components in that category from the System. It also accepts filter functions for a more refined search.","category":"page"},{"location":"explanation/system/","page":"System","title":"System","text":"Given the potential size of the return, PowerSystems.jl returns Julia iterators in order to avoid unnecessary memory allocations. The container is optimized for iteration over abstract or concrete component types as described by the Type Structure.","category":"page"},{"location":"explanation/system/#dot_access","page":"System","title":"Accessing data stored in a component","text":"","category":"section"},{"location":"explanation/system/","page":"System","title":"System","text":"Using the \"dot\" access to get a parameter value from a component is actively discouraged, use \"getter\" functions instead","category":"page"},{"location":"explanation/system/","page":"System","title":"System","text":"Using code autogeneration, PowerSystems.jl implements accessor (or \"getter\") functions to enable the retrieval of parameters defined in the component struct fields. Julia syntax enables access to this data using the \"dot\" access (e.g. component.field), however this is actively discouraged for two reasons:","category":"page"},{"location":"explanation/system/","page":"System","title":"System","text":"We make no guarantees on the stability of component structure definitions. We will maintain version stability on the accessor methods.\nPer-unit conversions are made in the return of data from the accessor functions. (see the per-unit section for more details)","category":"page"},{"location":"model_library/generated_PeriodicVariableSource/#PeriodicVariableSource","page":"PeriodicVariableSource","title":"PeriodicVariableSource","text":"","category":"section"},{"location":"model_library/generated_PeriodicVariableSource/","page":"PeriodicVariableSource","title":"PeriodicVariableSource","text":"Modules = [PowerSystems]\nPages = [\"generated/PeriodicVariableSource.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.PeriodicVariableSource","page":"PeriodicVariableSource","title":"PowerSystems.PeriodicVariableSource","text":"mutable struct PeriodicVariableSource <: DynamicInjection\n name::String\n R_th::Float64\n X_th::Float64\n internal_voltage_bias::Float64\n internal_voltage_frequencies::Vector{Float64}\n internal_voltage_coefficients::Vector{Tuple{Float64,Float64}}\n internal_angle_bias::Float64\n internal_angle_frequencies::Vector{Float64}\n internal_angle_coefficients::Vector{Tuple{Float64,Float64}}\n base_power::Float64\n states::Vector{Symbol}\n n_states::Int\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nThis struct acts as an infinity bus with time varying phasor values magnitude and angle V(t) \theta(t). Time varying functions are represented using fourier series\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nR_th::Float64: Source Thevenin resistance, validation range: (0, nothing)\nX_th::Float64: Source Thevenin reactance, validation range: (0, nothing)\ninternal_voltage_bias::Float64: (default: 0.0) a0 term of the Fourier Series for the voltage\ninternal_voltage_frequencies::Vector{Float64}: (default: [0.0]) Frequencies in radians/s\ninternal_voltage_coefficients::Vector{Tuple{Float64,Float64}}: (default: [(0.0, 0.0)]) Coefficients for terms n > 1. First component corresponds to sin and second component to cos\ninternal_angle_bias::Float64: (default: 0.0) a0 term of the Fourier Series for the angle\ninternal_angle_frequencies::Vector{Float64}: (default: [0.0]) Frequencies in radians/s\ninternal_angle_coefficients::Vector{Tuple{Float64,Float64}}: (default: [(0.0, 0.0)]) Coefficients for terms n > 1. First component corresponds to sin and second component to cos\nbase_power::Float64: (default: 100.0) Base power of the source (MVA) for per unitization\nstates::Vector{Symbol}: (Do not modify.) The states for time, voltage and angle\nn_states::Int: (Do not modify.) PeriodicVariableSource has 2 states\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PeriodicVariableSource/#InfrastructureSystems.get_name-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"InfrastructureSystems.get_name","text":"get_name(value::PeriodicVariableSource) -> String\n\n\nGet PeriodicVariableSource name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_R_th-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_R_th","text":"get_R_th(value::PeriodicVariableSource) -> Float64\n\n\nGet PeriodicVariableSource R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_X_th-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_X_th","text":"get_X_th(value::PeriodicVariableSource) -> Float64\n\n\nGet PeriodicVariableSource X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_base_power-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_base_power","text":"get_base_power(value::PeriodicVariableSource) -> Float64\n\n\nGet PeriodicVariableSource base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_ext-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_ext","text":"get_ext(value::PeriodicVariableSource) -> Dict{String, Any}\n\n\nGet PeriodicVariableSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_angle_bias-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_angle_bias","text":"get_internal_angle_bias(\n value::PeriodicVariableSource\n) -> Float64\n\n\nGet PeriodicVariableSource internal_angle_bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_angle_coefficients-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_angle_coefficients","text":"get_internal_angle_coefficients(\n value::PeriodicVariableSource\n) -> Vector{Tuple{Float64, Float64}}\n\n\nGet PeriodicVariableSource internal_angle_coefficients.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_angle_frequencies-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_angle_frequencies","text":"get_internal_angle_frequencies(\n value::PeriodicVariableSource\n) -> Vector{Float64}\n\n\nGet PeriodicVariableSource internal_angle_frequencies.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_voltage_bias-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_voltage_bias","text":"get_internal_voltage_bias(\n value::PeriodicVariableSource\n) -> Float64\n\n\nGet PeriodicVariableSource internal_voltage_bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_voltage_coefficients-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_voltage_coefficients","text":"get_internal_voltage_coefficients(\n value::PeriodicVariableSource\n) -> Vector{Tuple{Float64, Float64}}\n\n\nGet PeriodicVariableSource internal_voltage_coefficients.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_internal_voltage_frequencies-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_internal_voltage_frequencies","text":"get_internal_voltage_frequencies(\n value::PeriodicVariableSource\n) -> Vector{Float64}\n\n\nGet PeriodicVariableSource internal_voltage_frequencies.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_n_states-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_n_states","text":"get_n_states(value::PeriodicVariableSource) -> Int64\n\n\nGet PeriodicVariableSource n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.get_states-Tuple{PeriodicVariableSource}","page":"PeriodicVariableSource","title":"PowerSystems.get_states","text":"get_states(value::PeriodicVariableSource) -> Vector{Symbol}\n\n\nGet PeriodicVariableSource states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_R_th!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_R_th!","text":"set_R_th!(value::PeriodicVariableSource, val) -> Any\n\n\nSet PeriodicVariableSource R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_X_th!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_X_th!","text":"set_X_th!(value::PeriodicVariableSource, val) -> Any\n\n\nSet PeriodicVariableSource X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_base_power!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::PeriodicVariableSource, val) -> Any\n\n\nSet PeriodicVariableSource base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_ext!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_ext!","text":"set_ext!(value::PeriodicVariableSource, val) -> Any\n\n\nSet PeriodicVariableSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_angle_bias!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_angle_bias!","text":"set_internal_angle_bias!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_angle_bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_angle_coefficients!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_angle_coefficients!","text":"set_internal_angle_coefficients!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_angle_coefficients.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_angle_frequencies!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_angle_frequencies!","text":"set_internal_angle_frequencies!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_angle_frequencies.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_voltage_bias!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_voltage_bias!","text":"set_internal_voltage_bias!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_voltage_bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_voltage_coefficients!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_voltage_coefficients!","text":"set_internal_voltage_coefficients!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_voltage_coefficients.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PeriodicVariableSource/#PowerSystems.set_internal_voltage_frequencies!-Tuple{PeriodicVariableSource, Any}","page":"PeriodicVariableSource","title":"PowerSystems.set_internal_voltage_frequencies!","text":"set_internal_voltage_frequencies!(\n value::PeriodicVariableSource,\n val\n) -> Any\n\n\nSet PeriodicVariableSource internal_voltage_frequencies.\n\n\n\n\n\n","category":"method"},{"location":"api/enumerated_types/#Specifying-the-type-of...","page":"Specifying the category of...","title":"Specifying the type of...","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Some fields in PowerSystems.jl are specified with an option from a pre-defined list (Specified with IS.scoped_enums).","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Example syntax:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"set_fuel!(gen, ThermalFuels.COAL)","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"These predefined lists are below:","category":"page"},{"location":"api/enumerated_types/#acbustypes_list","page":"Specifying the category of...","title":"AC Buses","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"ACBusTypes categorize buses for modeling activities and denote which quantities are specified for load flow calculations. ACBusTypes has the options:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name Description\nISOLATED Disconnected from network\nPQ Active and reactive power defined (load bus)\nPV Active power and voltage magnitude defined (generator bus)\nREF Reference bus (θ = 0)\nSLACK Slack bus","category":"page"},{"location":"api/enumerated_types/#pm_list","page":"Specifying the category of...","title":"Prime Movers","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Each generator contains a field for prime_mover::PrimeMovers, based on the options in EIA form 923. PrimeMovers has the options:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name Description\nBA Energy Storage, Battery\nBT Turbines Used in a Binary Cycle (including those used for geothermal applications)\nCA Combined-Cycle – Steam Part\nCC Combined-Cycle - Aggregated Plant *augmentation of EIA\nCE Energy Storage, Compressed Air\nCP Energy Storage, Concentrated Solar Power\nCS Combined-Cycle Single-Shaft Combustion turbine and steam turbine share a single generator\nCT Combined-Cycle Combustion Turbine Part\nES Energy Storage, Other\nFC Fuel Cell\nFW Energy Storage, Flywheel\nGT Combustion (Gas) Turbine (including jet engine design)\nHA Hydrokinetic, Axial Flow Turbine\nHB Hydrokinetic, Wave Buoy\nHK Hydrokinetic, Other\nHY Hydraulic Turbine (including turbines associated with delivery of water by pipeline)\nIC Internal Combustion (diesel, piston, reciprocating) Engine\nPS Energy Storage, Reversible Hydraulic Turbine (Pumped Storage)\nOT Other\nST Steam Turbine (including nuclear, geothermal and solar steam; does not include combined-cycle turbine)\nPVe Photovoltaic (Note: renaming from EIA PV to PVe to avoid conflict with ACBusType.PV)\nWT Wind Turbine, Onshore\nWS Wind Turbine, Offshore","category":"page"},{"location":"api/enumerated_types/#tf_list","page":"Specifying the category of...","title":"Fuels for Thermal Generators","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Each ThermalGen generator has a field for fuel::ThermalFuels where ThermalFuels are intended to reflect the options in the Aggregated Fuel Codes from the EIA Annual Energy Review. ThermalFuels has the options:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name EIA Fuel Code Description\nCOAL COL Anthracite Coal and Bituminous Coal\nWASTE_COAL WOC Waste/Other Coal (includes anthracite culm, gob, fine coal, lignite waste, waste coal)\nDISTILLATE_FUEL_OIL DFO Distillate Fuel Oil (Diesel, No. 1, No. 2, and No. 4)\nWASTE_OIL WOO Waste Oil Kerosene and JetFuel Butane, Propane\nPETROLEUM_COKE PC Petroleum Coke\nRESIDUAL_FUEL_OIL RFO Residual Fuel Oil (No. 5, No. 6 Fuel Oils, and Bunker Oil)\nNATURAL_GAS NG Natural Gas\nOTHER_GAS OOG Other Gas and blast furnace gas\nNUCLEAR NUC Nuclear Fission (Uranium, Plutonium, Thorium)\nAG_BIPRODUCT ORW Agricultural Crop Byproducts/Straw/Energy Crops\nMUNICIPAL_WASTE MLG Municipal Solid Waste – Biogenic component\nWOOD_WASTE WWW Wood Waste Liquids excluding Black Liquor (BLQ) (Includes red liquor, sludge wood, spent sulfite liquor, and other wood-based liquids)\nGEOTHERMAL GEO Geothermal\nOTHER OTH Other","category":"page"},{"location":"api/enumerated_types/#storagetech_list","page":"Specifying the category of...","title":"Energy Storage","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"StorageTech defines the storage technology used in an energy Storage system, based on the options in EIA form 923. StorageTech has the options:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name Description\nPTES Pumped thermal energy storage\nLIB LiON Battery\nLAB Lead Acid Battery\nFLWB Redox Flow Battery\nSIB Sodium Ion Battery\nZIB Zinc Ion Battery\nHGS Hydrogen Gas Storage\nLAES Liquid Air Storage\nOTHER_CHEM Other Chemical Storage\nOTHER_MECH Other Mechanical Storage\nOTHER_THERM Other Thermal Storage","category":"page"},{"location":"api/enumerated_types/#states_list","page":"Specifying the category of...","title":"Dynamic States","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"StateTypes are used to denote the type of dynamic equation a specific state is subject to in PowerSimulationsDynamics.jl. StateTypes has the options:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name Description\nDifferential State evolves over time via a differential equation dotx = f(x)\nAlgebraic State evolves over time by satisfying an algebraic equation 0 = g(x)\nHybrid Depending on specific parameters, the state can be Differential or Algebraic","category":"page"},{"location":"api/enumerated_types/#angleunits_list","page":"Specifying the category of...","title":"Angle Units","text":"","category":"section"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"AngleUnits can be specified in:","category":"page"},{"location":"api/enumerated_types/","page":"Specifying the category of...","title":"Specifying the category of...","text":"Name\nDEGREES\nRADIANS","category":"page"},{"location":"model_library/load_cost/#LoadCost","page":"LoadCost","title":"LoadCost","text":"","category":"section"},{"location":"model_library/load_cost/","page":"LoadCost","title":"LoadCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/LoadCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/load_cost/#PowerSystems.LoadCost","page":"LoadCost","title":"PowerSystems.LoadCost","text":"mutable struct LoadCost <: OperationalCost\n\nvariable::CostCurve: Variable cost represented as a CostCurve\nfixed::Float64: (default: 0) Fixed cost. For some cost represenations this field can be duplicative\n\nLoadCost(variable, fixed)\nLoadCost(; variable, fixed)\n\nAn operational cost for controllable loads (e.g., InterruptiblePowerLoad), including fixed and variable cost components.\n\nThe variable cost is a required parameter, but zero(CostCurve) can be used to set it to 0.\n\n\n\n\n\n","category":"type"},{"location":"model_library/load_cost/#PowerSystems.get_fixed-Tuple{LoadCost}","page":"LoadCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::LoadCost) -> Float64\n\n\nGet LoadCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/load_cost/#PowerSystems.get_variable-Tuple{LoadCost}","page":"LoadCost","title":"PowerSystems.get_variable","text":"get_variable(value::LoadCost) -> CostCurve\n\n\nGet LoadCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/load_cost/#PowerSystems.set_fixed!-Tuple{LoadCost, Any}","page":"LoadCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::LoadCost, val) -> Any\n\n\nSet LoadCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/load_cost/#PowerSystems.set_variable!-Tuple{LoadCost, Any}","page":"LoadCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::LoadCost, val) -> Any\n\n\nSet LoadCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#ThermalGenerationCost","page":"ThermalGenerationCost","title":"ThermalGenerationCost","text":"","category":"section"},{"location":"model_library/thermal_generation_cost/","page":"ThermalGenerationCost","title":"ThermalGenerationCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/ThermalGenerationCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/thermal_generation_cost/#PowerSystems.ThermalGenerationCost","page":"ThermalGenerationCost","title":"PowerSystems.ThermalGenerationCost","text":"mutable struct ThermalGenerationCost <: OperationalCost\n\nvariable::ProductionVariableCostCurve: Variable production cost. Can take a CostCurve or FuelCurve\nfixed::Float64: Fixed cost of keeping the unit online. For some cost represenations this field can be duplicative\nstart_up::Union{Float64, @NamedTuple{hot::Float64, warm::Float64, cold::Float64}}: Start-up cost can take linear or multi-stage cost\nshut_down::Float64: Cost to turn the unit off\n\nThermalGenerationCost(variable, fixed, start_up, shut_down)\nThermalGenerationCost(; variable, fixed, start_up, shut_down)\n\nAn operational cost for thermal generators which includes fixed cost, variable cost, shut-down cost, and multiple options for start up costs.\n\n\n\n\n\n","category":"type"},{"location":"model_library/thermal_generation_cost/#PowerSystems.get_fixed-Tuple{ThermalGenerationCost}","page":"ThermalGenerationCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::ThermalGenerationCost) -> Float64\n\n\nGet ThermalGenerationCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.get_shut_down-Tuple{ThermalGenerationCost}","page":"ThermalGenerationCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::ThermalGenerationCost) -> Float64\n\n\nGet ThermalGenerationCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.get_start_up-Tuple{ThermalGenerationCost}","page":"ThermalGenerationCost","title":"PowerSystems.get_start_up","text":"get_start_up(\n value::ThermalGenerationCost\n) -> Union{Float64, @NamedTuple{hot::Float64, warm::Float64, cold::Float64}}\n\n\nGet ThermalGenerationCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.get_variable-Tuple{ThermalGenerationCost}","page":"ThermalGenerationCost","title":"PowerSystems.get_variable","text":"get_variable(\n value::ThermalGenerationCost\n) -> ProductionVariableCostCurve\n\n\nGet ThermalGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.set_fixed!-Tuple{ThermalGenerationCost, Any}","page":"ThermalGenerationCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::ThermalGenerationCost, val) -> Any\n\n\nSet ThermalGenerationCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.set_shut_down!-Tuple{ThermalGenerationCost, Any}","page":"ThermalGenerationCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::ThermalGenerationCost, val) -> Any\n\n\nSet ThermalGenerationCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.set_start_up!-Tuple{ThermalGenerationCost, Any}","page":"ThermalGenerationCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::ThermalGenerationCost, val) -> Any\n\n\nSet ThermalGenerationCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/thermal_generation_cost/#PowerSystems.set_variable!-Tuple{ThermalGenerationCost, Any}","page":"ThermalGenerationCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::ThermalGenerationCost, val) -> Any\n\n\nSet ThermalGenerationCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerLoad","page":"PowerLoad","title":"PowerLoad","text":"","category":"section"},{"location":"model_library/generated_PowerLoad/","page":"PowerLoad","title":"PowerLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/PowerLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PowerLoad/#PowerSystems.PowerLoad","page":"PowerLoad","title":"PowerSystems.PowerLoad","text":"mutable struct PowerLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n base_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA static power load, most commonly used for operational models such as power flow and operational optimizations.\n\nThis load consumes a set amount of power (set by active_power for a power flow simulation or a max_active_power time series for an operational simulation). For loads that can be compensated for load interruptions through demand response programs, see InterruptiblePowerLoad. For voltage-dependent loads used in dynamics modeling, see StandardLoad\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial steady-state active power demand (MW)\nreactive_power::Float64: Initial steady-state reactive power demand (MVAR)\nbase_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)\nmax_active_power::Float64: Maximum active power (MW) that this load can demand\nmax_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PowerLoad/#InfrastructureSystems.get_name-Tuple{PowerLoad}","page":"PowerLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::PowerLoad) -> String\n\n\nGet PowerLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_active_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_available-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_available","text":"get_available(value::PowerLoad) -> Bool\n\n\nGet PowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_base_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::PowerLoad) -> Float64\n\n\nGet PowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_bus-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_bus","text":"get_bus(value::PowerLoad) -> ACBus\n\n\nGet PowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_dynamic_injector-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::PowerLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet PowerLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_ext-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_ext","text":"get_ext(value::PowerLoad) -> Dict{String, Any}\n\n\nGet PowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_max_active_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_max_reactive_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_reactive_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_services-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_services","text":"get_services(value::PowerLoad) -> Vector{Service}\n\n\nGet PowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_active_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_available!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_available!","text":"set_available!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_base_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_bus!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_ext!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_max_active_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_max_reactive_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_reactive_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_services!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_services!","text":"set_services!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/working_with_time_series/#tutorial_time_series","page":"Working with Time Series","title":"Working with Time Series Data","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"In this tutorial, we will manually add, retrieve, and inspect time-series data in different formats, including identifying which components in a power System have time series data. Along the way, we will also use workarounds for missing forecast data and reuse identical time series profiles to avoid unnecessary memory usage.","category":"page"},{"location":"tutorials/working_with_time_series/#Example-Data-and-Setup","page":"Working with Time Series","title":"Example Data and Setup","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"We will make an example System with a wind generator and two loads, and add the time series needed to model, for example, the impacts of wind forecast uncertainty.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Here is the available data:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"For the wind generator, we have the historical point (deterministic) forecasts of power output. The forecasts were generated every 30 minutes with a 5-minute resolution and 1-hour horizon. We also have measurements what actually happened at 5-minute resolution over the 2 hours.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"For the loads, note that the forecast data is missing. We only have the historical measurements of total load for the system, which is normalized to the system's peak load.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Load the PowerSystems, Dates, and TimeSeries packages to get started:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"using PowerSystems\nusing Dates\nusing TimeSeries","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"As usual, we need to define a power System that holds all our data. Let's define a simple system with a bus, a wind generator, and two loads:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"system = System(100.0); # 100 MVA base power\n\nbus1 = ACBus(;\n number = 1,\n name = \"bus1\",\n bustype = ACBusTypes.REF,\n angle = 0.0,\n magnitude = 1.0,\n voltage_limits = (min = 0.9, max = 1.05),\n base_voltage = 230.0,\n);\n\nwind1 = RenewableDispatch(;\n name = \"wind1\",\n available = true,\n bus = bus1,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n rating = 1.0, # 10 MW per-unitized by device base_power\n prime_mover_type = PrimeMovers.WT,\n reactive_power_limits = (min = 0.0, max = 0.0), # per-unitized by device base_power\n power_factor = 1.0,\n operation_cost = RenewableGenerationCost(nothing),\n base_power = 10.0, # MVA\n);\n\nload1 = PowerLoad(;\n name = \"load1\",\n available = true,\n bus = bus1,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n base_power = 10.0, # MVA\n max_active_power = 1.0, # 10 MW per-unitized by device base_power\n max_reactive_power = 0.0,\n);\n\nload2 = PowerLoad(;\n name = \"load2\",\n available = true,\n bus = bus1,\n active_power = 0.0, # Per-unitized by device base_power\n reactive_power = 0.0, # Per-unitized by device base_power\n base_power = 30.0, # MVA\n max_active_power = 1.0, # 10 MW per-unitized by device base_power\n max_reactive_power = 0.0,\n);\n\nadd_components!(system, [bus1, wind1, load1, load2])","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Recall that we can also set the System's unit base to natural units (MW) to make it easier to inspect results:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"set_units_base_system!(system, \"NATURAL_UNITS\")","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Before we get started, print wind1 to see its data:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"wind1","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See the has_time_series field at the bottom is false.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Recall that we also can see a summary of the system by printing it:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"system","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Observe that there is no mention of time series data in the system yet.","category":"page"},{"location":"tutorials/working_with_time_series/#Add-and-Retrieve-a-Single-Time-Series","page":"Working with Time Series","title":"Add and Retrieve a Single Time Series","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's start by defining and attaching the wind measurements shown in the data above. This is a single time series profile, so we will use a SingleTimeSeries.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"First, define a TimeSeries.TimeArray of input data, using the 5-minute resolution to define the time-stamps in the example data:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"wind_values = [6.0, 7, 7, 6, 7, 9, 9, 9, 8, 8, 7, 6, 5, 5, 5, 5, 5, 6, 6, 6, 7, 6, 7, 7];\nresolution = Dates.Minute(5);\ntimestamps = range(DateTime(\"2020-01-01T08:00:00\"); step = resolution, length = 24);\nwind_timearray = TimeArray(timestamps, wind_values);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Now, use the input data to define a Single Time Series in PowerSystems:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"wind_time_series = SingleTimeSeries(;\n name = \"max_active_power\",\n data = wind_timearray,\n);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Note that we've chosen the name max_active_power, which is the default time series profile name when using PowerSimulations.jl for simulations.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"So far, this time series has been defined, but not attached to our System in any way. Now, attach it to wind1 using add_time_series!:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"add_time_series!(system, wind1, wind_time_series);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's double-check this worked by calling show_time_series:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"show_time_series(wind1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Now wind1 has the first time-series data set. Recall that you can also print wind1 and check the has_time_series field like we did above.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, let's retrieve and inspect the new timeseries, using get_time_series_array:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(SingleTimeSeries, wind1, \"max_active_power\")","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Verify this matches your expectation based on the input data.","category":"page"},{"location":"tutorials/working_with_time_series/#Add-and-Retrieve-a-Forecast","page":"Working with Time Series","title":"Add and Retrieve a Forecast","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Next, let's add the wind power forecasts. We will use a Deterministic format for the point forecasts.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Because we have forecasts with at different initial times, the input data must be a dictionary where the keys are the initial times and the values are vectors or TimeSeries.TimeArrays of the forecast data. Set up the example input data:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"wind_forecast_data = Dict(\n DateTime(\"2020-01-01T08:00:00\") => [5.0, 6, 7, 7, 7, 8, 9, 10, 10, 9, 7, 5],\n DateTime(\"2020-01-01T08:30:00\") => [9.0, 9, 9, 9, 8, 7, 6, 5, 4, 5, 4, 4],\n DateTime(\"2020-01-01T09:00:00\") => [6.0, 6, 5, 5, 4, 5, 6, 7, 7, 7, 6, 6],\n);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Define the Deterministic forecast and attach it to wind1:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"wind_forecast = Deterministic(\"max_active_power\", wind_forecast_data, resolution);\nadd_time_series!(system, wind1, wind_forecast);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's call show_time_series once again:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"show_time_series(wind1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice that we now have two types of time series listed – the single time series and the forecasts.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, let's retrieve the forecast data to double check it was added properly, specifying the initial time to get the 2nd forecast window starting at 8:30:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(\n Deterministic,\n wind1,\n \"max_active_power\";\n start_time = DateTime(\"2020-01-01T08:30:00\"),\n)","category":"page"},{"location":"tutorials/working_with_time_series/#Add-A-Time-Series-Using-Scaling-Factors","page":"Working with Time Series","title":"Add A Time Series Using Scaling Factors","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's add the load time series. Recall that this data is normalized to the peak system power, so we'll use it to scale both of our loads. We call normalized time series data scaling factors.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"First, let's create our input data TimeSeries.TimeArray with the example data and the same time stamps we used in the wind time series:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"load_values = [0.3, 0.3, 0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.6, 0.6,\n 0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.8, 0.8, 0.8, 0.8, 0.8];\nload_timearray = TimeArray(timestamps, load_values);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Again, define a SingleTimeSeries, but this time use the scaling_factor_multiplierparameter to scale this time series from normalized values to power values:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"load_time_series = SingleTimeSeries(;\n name = \"max_active_power\",\n data = load_timearray,\n scaling_factor_multiplier = get_max_active_power,\n);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice that we assigned the get_max_active_power function to scale the time series, rather than a value, making the time series reusable for multiple components or multiple fields in a component.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Now, add the scaling factor time series to both loads to save memory and avoid data duplication:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"add_time_series!(system, [load1, load2], load_time_series);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's take a look at load1, including printing its parameters...","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"load1","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"...as well as its time series:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"show_time_series(load1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"tip: Important\nNotice that each load now has two references to max_active_power. This is intentional. There is the parameter, max_active_power, which is the maximum demand of each load at any time (10 MW). There is also max_active_power the time series, which is the time varying demand over the 2-hour window, calculated using the scaling factors and the max_active_power parameter.This means that if we change the max_active_power parameter, the time series will also change when we retrieve it! This is also true when we apply the same scaling factors to multiple components or parameters.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's check the impact that these two max_active_power data sources have on the times series data when we retrieve it. Get the max_active_power time series for load1:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(SingleTimeSeries, load1, \"max_active_power\") # in MW","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See that the normalized values have been scaled up by 10 MW.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Now let's at load2. First check its max_active_power parameter:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_max_active_power(load2)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"This has a higher peak maximum demand of 30 MW.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Next, retrieve it's max_active_power time series:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(SingleTimeSeries, load2, \"max_active_power\") # in MW","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Observe the difference compared to load1's time series.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, retrieve the underlying time series data with no scaling factor multiplier applied:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(SingleTimeSeries,\n load2,\n \"max_active_power\";\n ignore_scaling_factors = true,\n)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice that this is the normalized input data, which is still being stored underneath. Each load is using a reference to that data when we call get_time_series_array to avoid unnecessary data duplication.","category":"page"},{"location":"tutorials/working_with_time_series/#Transform-a-SingleTimeSeries-into-a-Forecast","page":"Working with Time Series","title":"Transform a SingleTimeSeries into a Forecast","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, let's use a workaround to handle the missing load forecast data. We will assume a perfect forecast where the forecast is based on the SingleTimeSeries we just added.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Rather than unnecessarily duplicating and reformatting data, use PowerSystems.jl's dedicated transform_single_time_series! function to generate a DeterministicSingleTimeSeries, which saves memory while behaving just like a Deterministic forecast:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"transform_single_time_series!(\n system,\n Dates.Hour(1), # horizon\n Dates.Minute(30), # interval\n);","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's see the results for load1's time series summary:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"show_time_series(load1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice we now have a load forecast data set with the resolution, horizon, and, interval matching our wind forecasts.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Retrieve the first forecast window:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_time_series_array(\n DeterministicSingleTimeSeries,\n load1,\n \"max_active_power\";\n start_time = DateTime(\"2020-01-01T08:00:00\"),\n)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See that load1's scaling factor multiplier is still being applied as expected.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Continue to the next section to address one more impact of calling transform_single_time_series! on the entire System.","category":"page"},{"location":"tutorials/working_with_time_series/#Finding,-Retrieving,-and-Inspecting-Time-Series","page":"Working with Time Series","title":"Finding, Retrieving, and Inspecting Time Series","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Now, let's complete this tutorial by doing a few sanity checks on the data that we've added, where are we will also examine components with time series and retrieve the time series data in a few more ways.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"First, recall that we can print a component to check its has_time_series field:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"load1","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Also, recall we can print the System to summarize the data in our system:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"system","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice that a new table has been added – the Time Series Summary, showing the count of each Type of component that has a given time series type.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Additionally, see that there are both Deterministic and DeterministicSingleTimeSeries forecasts for our RenewableDispatch generator (wind1). This was a side effect of transform_single_time_series! which added DeterministicSingleTimeSeries for all StaticTimeSeries in the system, even though we don't need one for wind.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's remove it with remove_time_series!. Since we have one wind generator, we could easily do it for that component, but let's do programmatically instead by its Type:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"for g in get_components(x -> has_time_series(x), RenewableDispatch, system)\n remove_time_series!(system, DeterministicSingleTimeSeries, g, \"max_active_power\")\nend","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Notice that we also filtered for components where has_time_series is true, which is a simple way to find and manipulate components with time series.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Let's double check wind1 now:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"show_time_series(wind1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See the unnecessary data is gone.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, let's do a last data sanity check on the forecasts. Since we defined the wind time series in MW instead of scaling factors, let's make sure none of our forecasts exceeds the max_active_power parameter.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Instead of using get_time_series_array where we need to remember some details of the time series we're looking up, let's use get_time_series_keys to refresh our memories:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"keys = get_time_series_keys(wind1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See the forecast key is first, so let's retrieve it using get_time_series:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"forecast = get_time_series(wind1, keys[1])","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See that unlike when we used get_time_series_array, this returns an object we can manipulate.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Use iterate_windows to cycle through the 3 forecast windows and inspect the peak value:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"for window in iterate_windows(forecast)\n @show values(maximum(window))\nend","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Finally, use get_max_active_power to check the expected maximum:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"get_max_active_power(wind1)","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"See that the forecasts are not exceeding this maximum – sanity check complete.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"tip: Tip\nUnlike PowerLoad components, RenewableDispatch components do not have a max_active_power field, so check get_max_active_power to see how its calculated.","category":"page"},{"location":"tutorials/working_with_time_series/#Next-Steps","page":"Working with Time Series","title":"Next Steps","text":"","category":"section"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"In this tutorial, you defined, added, and retrieved four time series data sets, including static time series and deterministic forecasts. Along the way, we reduced data duplication using normalized scaling factors for reuse by multiple components or component fields, as well as by referencing a StaticTimeSeries to address missing forecast data.","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Next you might like to:","category":"page"},{"location":"tutorials/working_with_time_series/","page":"Working with Time Series","title":"Working with Time Series","text":"Parse many timeseries data sets from CSV's\nSee how to improve performance efficiency with your own time series data\nReview the available time series data formats\nLearn more about how times series data is stored","category":"page"},{"location":"#Welcome-to-PowerSystems.jl","page":"Welcome Page","title":"Welcome to PowerSystems.jl","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"CurrentModule = PowerSystems","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"tip: Announcement\nPowerSystems.jl upgraded to version 4.0 in June 2024, which included breaking changes. Visit the v4.0 migration guide for information on how to update your existing code.We also have re-organized and updated this documentation, including new tutorials! Check out How To Use This Documentation below to orient yourself.","category":"page"},{"location":"#About","page":"Welcome Page","title":"About","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl is part of the National Renewable Energy Laboratory's Sienna ecosystem, an open source framework for scheduling problems and dynamic simulations for power systems. The Sienna ecosystem can be found on github. It contains three applications:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Sienna\\Data enables efficient data input, analysis, and transformation\nSienna\\Ops enables enables system scheduling simulations by formulating and solving optimization problems\nSienna\\Dyn enables system transient analysis including small signal stability and full system dynamic simulations","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Each application uses multiple packages in the Julia programming language.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl is the foundation of Sienna\\Data, and it is used with all three applications. It provides a rigorous data model using Julia structures to enable power systems modeling. PowerSystems.jl is agnostic to a specific mathematical model and can be used for many model categories.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl provides tools to prepare and process data useful for electric energy systems modeling. This package serves two purposes:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"It facilitates the development and open sharing of large data sets for Power Systems modeling\nIt provides a data model that imposes discipline on model specification, addressing the challenge of design and terminology choices when sharing code and data.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"The main features include:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Comprehensive and extensible library of data structures for electric systems modeling.\nLarge scale data set development tools based on common text based data formats (PSS/e .raw and .dyr, and MATPOWER) and configurable tabular data (e.g. CSV) parsing capabilities.\nOptimized container for component data and time series supporting serialization to portable file formats and configurable validation routines.","category":"page"},{"location":"#How-To-Use-This-Documentation","page":"Welcome Page","title":"How To Use This Documentation","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"There are five main sections containing different information:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Tutorials - Detailed walk-throughs to help you learn how to use PowerSystems.jl\nHow to... - Directions to help guide your work for a particular task\nExplanation - Additional details and background information to help you understand PowerSystems.jl, its structure, and how it works behind the scenes\nReference - Technical references and API for a quick look-up during your work\nModel Library - Technical references of the data types and their functions that PowerSystems.jl uses to model power system components","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl strives to follow the Diataxis documentation framework.","category":"page"},{"location":"#Getting-Started","page":"Welcome Page","title":"Getting Started","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"If you are new to PowerSystems.jl, here's how we suggest getting started:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Install\nWork through the introductory tutorial: Create and Explore a Power System to familiarize yourself with how PowerSystems.jl works\nWork through the other basic tutorials based on your interests\nSee Working with Time Series Data if you will be doing production cost modeling or working with time series\nSee Adding Data for Dynamic Simulations if you are interested in dynamic simulations\nThen, see the how-to's on parsing Matpower or PSS/e files or CSV files to begin loading your own data into PowerSystems.jl","category":"page"},{"location":"how_to/add_component_natural_units/#Add-a-Component-in-Natural-Units","page":"...add a component using natural units (MW)","title":"Add a Component in Natural Units","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"using PowerSystems; #hide\nusing PowerSystemCaseBuilder #hide\nsystem = build_system(PSISystems, \"modified_RTS_GMLC_DA_sys\"); #hide","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"PowerSystems.jl has three per-unitization options for getting, setting and displaying data.","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Currently, only one of these options – \"DEVICE_BASE\" – is supported when using a constructor function define a component. You can see an example of the default capabilities using \"DEVICE_BASE\" here.","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"We hope to add capability to define components in \"NATURAL_UNITS\" with constructors in the future, but for now, below is a workaround for users who prefer to define data using \"NATURAL_UNITS\" (e.g., MW, MVA, MVAR, or MW/min):","category":"page"},{"location":"how_to/add_component_natural_units/#Step-1:-Set-Units-Base","page":"...add a component using natural units (MW)","title":"Step 1: Set Units Base","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Set your (previously-defined) System's units base to \"NATURAL_UNITS\":","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"set_units_base_system!(system, \"NATURAL_UNITS\")","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Now, the \"setter\" functions have been switched to define data using natural units (MW, MVA, etc.), taking care of the necessary data conversions behind the scenes.","category":"page"},{"location":"how_to/add_component_natural_units/#Step-2:-Define-Empty-Component","page":"...add a component using natural units (MW)","title":"Step 2: Define Empty Component","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Define an empty component with 0.0 or nothing for all the power-related fields except base_power, which is always in MVA.","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"For example:","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"gas1 = ThermalStandard(;\n name = \"gas1\",\n available = true,\n status = true,\n bus = get_component(ACBus, system, \"Cobb\"), # Attach to a previously-defined bus named Cobb\n active_power = 0.0,\n reactive_power = 0.0,\n rating = 0.0,\n active_power_limits = (min = 0.0, max = 0.0),\n reactive_power_limits = nothing,\n ramp_limits = nothing,\n operation_cost = ThermalGenerationCost(nothing),\n base_power = 30.0, # MVA\n time_limits = (up = 8.0, down = 8.0), # Hours, unaffected by per-unitization\n must_run = false,\n prime_mover_type = PrimeMovers.CC,\n fuel = ThermalFuels.NATURAL_GAS,\n);","category":"page"},{"location":"how_to/add_component_natural_units/#Step-3:-Attach-the-Component","page":"...add a component using natural units (MW)","title":"Step 3: Attach the Component","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Attach the component to your System:","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"add_component!(system, gas1)","category":"page"},{"location":"how_to/add_component_natural_units/#Step-4:-Add-Data-with-\"setter\"-Functions","page":"...add a component using natural units (MW)","title":"Step 4: Add Data with \"setter\" Functions","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Use individual \"setter\" functions to set each the value of each numeric field in natural units:","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"set_rating!(gas1, 30.0) #MVA\nset_active_power_limits!(gas1, (min = 6.0, max = 30.0)) # MW\nset_reactive_power_limits!(gas1, (min = 6.0, max = 30.0)) # MVAR\nset_ramp_limits!(gas1, (up = 6.0, down = 6.0)) #MW/min","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Notice the return values are divided by the base_power of 30 MW, showing the setters have done the per-unit conversion into \"DEVICE_BASE\" behind the scenes.","category":"page"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"tip: Tip\nSteps 2-4 can be called within a for loop to define many components at once (or step 3 can be replaced with add_components! to add all components at once).","category":"page"},{"location":"how_to/add_component_natural_units/#See-Also","page":"...add a component using natural units (MW)","title":"See Also","text":"","category":"section"},{"location":"how_to/add_component_natural_units/","page":"...add a component using natural units (MW)","title":"...add a component using natural units (MW)","text":"Read more to understand per-unitization in PowerSystems.jl\nLearn how to use the default constructors and explore the per-unitization settings in Create and Explore a Power System","category":"page"},{"location":"how_to/get_buses/#Get-the-buses-in-a-System","page":"...get all the buses in a system","title":"Get the buses in a System","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"using PowerSystems; #hide\nusing PowerSystemCaseBuilder #hide\nsystem = build_system(PSISystems, \"modified_RTS_GMLC_DA_sys\"); #hide","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"You can access all the buses in a System to view or manipulate their data using two key functions: get_components or get_buses.","category":"page"},{"location":"how_to/get_buses/#Option-1a:-Get-an-iterator-for-all-the-buses","page":"...get all the buses in a system","title":"Option 1a: Get an iterator for all the buses","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Use get_components to get an iterator of all the AC buses in an existing system:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"bus_iter = get_components(ACBus, system)","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"The iterator avoids unnecessary memory allocations if there are many buses, and it can be used to view or update the bus data. For example, we can set the base voltage of all buses to 330 kV:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"for b in bus_iter\n set_base_voltage!(b, 330.0)\nend","category":"page"},{"location":"how_to/get_buses/#Option-1b:-Get-a-vector-of-all-the-buses","page":"...get all the buses in a system","title":"Option 1b: Get a vector of all the buses","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Use collect to get a vector of the buses instead of an iterator, which could require a lot of memory:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"buses = collect(get_components(ACBus, system))","category":"page"},{"location":"how_to/get_buses/#Option-2a:-Get-the-buses-in-an-Area-or-LoadZone","page":"...get all the buses in a system","title":"Option 2a: Get the buses in an Area or LoadZone","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Use get_buses to get a vector of buses when you know which Area or LoadZone you are interested in.","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"First, we select an Area:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"show_components(Area, system) # See available Areas\narea2 = get_component(Area, system, \"2\"); # Get Area named 2","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Then call get_buses for that Area:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"area_buses = get_buses(system, area2)","category":"page"},{"location":"how_to/get_buses/#Option-2b:-Get-buses-by-ID-number","page":"...get all the buses in a system","title":"Option 2b: Get buses by ID number","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Finally, use get_buses to get a vector of buses by their ID numbers.","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"Example getting buses with ID numbers from 101 to 110:","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"buses_by_ID = get_buses(system, Set(101:110))","category":"page"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"note: Note\nYou can combine this with Option 1 to first view all the bus numbers if needed:get_number.(get_components(ACBus, system))","category":"page"},{"location":"how_to/get_buses/#See-Also","page":"...get all the buses in a system","title":"See Also","text":"","category":"section"},{"location":"how_to/get_buses/","page":"...get all the buses in a system","title":"...get all the buses in a system","text":"How to: Get the available generators in a System","category":"page"},{"location":"model_library/hybrid_system/#Hybrid-System","page":"HybridSystem","title":"Hybrid System","text":"","category":"section"},{"location":"model_library/hybrid_system/","page":"HybridSystem","title":"HybridSystem","text":"Modules = [PowerSystems]\nPages = [\"HybridSystem.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/hybrid_system/#PowerSystems.HybridSystem","page":"HybridSystem","title":"PowerSystems.HybridSystem","text":"mutable struct HybridSystem <: StaticInjectionSubsystem\n name::String\n available::Bool\n status::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n base_power::Float64\n operation_cost::MarketBidCost\n thermal_unit::Union{Nothing, ThermalGen}\n electric_load::Union{Nothing, ElectricLoad}\n storage::Union{Nothing, Storage}\n renewable_unit::Union{Nothing, RenewableGen}\n interconnection_impedance::ComplexF64\n interconnection_rating::Union{Nothing, Float64}\n input_active_power_limits::Union{Nothing, MinMax}\n output_active_power_limits::Union{Nothing, MinMax}\n reactive_power_limits::Union{Nothing, MinMax}\n interconnection_efficiency::Union{\n Nothing,\n NamedTuple{(:in, :out), Tuple{Float64, Float64}},\n }\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA Hybrid System that includes a combination of renewable generation, load, thermal generation and/or energy storage.\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nstatus::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, which is commonly the same as rating\noperation_cost::MarketBidCost: Market bid cost to operate, MarketBidCost\nthermal_unit::Union{Nothing, ThermalGen}: A thermal generator with supertype ThermalGen\nelectric_load::Union{Nothing, ElectricLoad}: A load with supertype ElectricLoad\nstorage::Union{Nothing, Storage}: An energy storage system with supertype Storage\nrenewable_unit::Union{Nothing, RenewableGen}: A renewable generator with supertype RenewableGen\ninterconnection_impedance::ComplexF64: Impedance (typically in p.u.) between the hybrid system and the grid interconnection\ninterconnection_rating::Union{Nothing, Float64}: Maximum rating of the hybrid system's interconnection with the transmission network (MVA)\ninput_active_power_limits::MinMax: Minimum and maximum stable input active power levels (MW)\noutput_active_power_limits::MinMax: Minimum and maximum stable output active power levels (MW)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits (MVAR). Set to Nothing if not applicable.\ninterconnection_efficiency::Union{Nothing, NamedTuple{(:in, :out), Tuple{Float64, Float64}},}: Efficiency [0, 1.0] at the grid interconnection to model losses in and out of the common DC-side conversion\nservices::Vector{Service}: (optional) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (optional) corresponding dynamic injection device\next::Dict{String, Any}: (optional) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference.\n\n\n\n\n\n","category":"type"},{"location":"model_library/hybrid_system/#PowerSystems.get_active_power-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_active_power","text":"get_active_power(value::HybridSystem) -> Any\n\n\nGet HybridSystem active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_available-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_available","text":"get_available(value::HybridSystem) -> Bool\n\n\nGet HybridSystem available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_base_power-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_base_power","text":"get_base_power(value::HybridSystem) -> Float64\n\n\nGet HybridSystem base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_bus-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_bus","text":"get_bus(value::HybridSystem) -> ACBus\n\n\nGet HybridSystem bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_dynamic_injector-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HybridSystem\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HybridSystem dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_electric_load-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_electric_load","text":"get_electric_load(\n value::HybridSystem\n) -> Union{Nothing, ElectricLoad}\n\n\nGet HybridSystem load\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_ext-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_ext","text":"get_ext(value::HybridSystem) -> Dict{String, Any}\n\n\nGet HybridSystem ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_input_active_power_limits-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_input_active_power_limits","text":"get_input_active_power_limits(\n value::HybridSystem\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HybridSystem input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_interconnection_impedance-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_interconnection_impedance","text":"get_interconnection_impedance(\n value::HybridSystem\n) -> ComplexF64\n\n\nget HybridSystem interconnection impedance\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_interconnection_rating-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_interconnection_rating","text":"get_interconnection_rating(value::HybridSystem) -> Any\n\n\nGet HybridSystem interconnection_rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_operation_cost-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(value::HybridSystem) -> MarketBidCost\n\n\nGet HybridSystem operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_output_active_power_limits-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_output_active_power_limits","text":"get_output_active_power_limits(\n value::HybridSystem\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HybridSystem output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_reactive_power-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HybridSystem) -> Any\n\n\nGet HybridSystem reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_reactive_power_limits-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HybridSystem\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HybridSystem reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_renewable_unit-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_renewable_unit","text":"get_renewable_unit(\n value::HybridSystem\n) -> Union{Nothing, RenewableGen}\n\n\nGet HybridSystem renewable unit\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_services-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_services","text":"get_services(value::HybridSystem) -> Vector{Service}\n\n\nGet HybridSystem services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_status-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_status","text":"get_status(value::HybridSystem) -> Bool\n\n\nGet HybridSystem status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_storage-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_storage","text":"get_storage(value::HybridSystem) -> Union{Nothing, Storage}\n\n\nGet HybridSystem storage unit\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_subcomponents-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_subcomponents","text":"get_subcomponents(hybrid::HybridSystem) -> Channel{Any}\n\n\nReturn an iterator over the subcomponents in the HybridSystem.\n\nExamples\n\nfor subcomponent in get_subcomponents(hybrid_sys)\n @show subcomponent\nend\nsubcomponents = collect(get_subcomponents(hybrid_sys))\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.get_thermal_unit-Tuple{HybridSystem}","page":"HybridSystem","title":"PowerSystems.get_thermal_unit","text":"get_thermal_unit(\n value::HybridSystem\n) -> Union{Nothing, ThermalGen}\n\n\nGet HybridSystem thermal unit\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_active_power!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_available!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_available!","text":"set_available!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_base_power!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_bus!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_bus!","text":"set_bus!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_ext!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_ext!","text":"set_ext!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_input_active_power_limits!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_input_active_power_limits!","text":"set_input_active_power_limits!(\n value::HybridSystem,\n val\n) -> Any\n\n\nSet HybridSystem input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_operation_cost!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_output_active_power_limits!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_output_active_power_limits!","text":"set_output_active_power_limits!(\n value::HybridSystem,\n val\n) -> Any\n\n\nSet HybridSystem output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_reactive_power!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_reactive_power_limits!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_services!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_services!","text":"set_services!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/hybrid_system/#PowerSystems.set_status!-Tuple{HybridSystem, Any}","page":"HybridSystem","title":"PowerSystems.set_status!","text":"set_status!(value::HybridSystem, val) -> Any\n\n\nGet HybridSystem status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#RenewableNonDispatch","page":"RenewableNonDispatch","title":"RenewableNonDispatch","text":"","category":"section"},{"location":"model_library/generated_RenewableNonDispatch/","page":"RenewableNonDispatch","title":"RenewableNonDispatch","text":"Modules = [PowerSystems]\nPages = [\"generated/RenewableNonDispatch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.RenewableNonDispatch","page":"RenewableNonDispatch","title":"PowerSystems.RenewableNonDispatch","text":"mutable struct RenewableNonDispatch <: RenewableGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n power_factor::Float64\n base_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA non-dispatchable (i.e., non-curtailable or must-take) renewable generator.\n\nIts output is equal to its max_active_power time series by default. Example use: an aggregation of behind-the-meter distributed energy resources like rooftop solar. For curtailable or downward dispatachable generation, see RenewableDispatch.\n\nRenewable generators do not have a max_active_power parameter, which is instead calculated when calling get_max_active_power()\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), used in some production cost modeling simulations. To set the reactive power in a load flow, use power_factor\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\npower_factor::Float64: Power factor [0, 1] set-point, used in some production cost modeling and in load flow if the unit is connected to a PQ bus, validation range: (0, 1)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableNonDispatch/#InfrastructureSystems.get_name-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"InfrastructureSystems.get_name","text":"get_name(value::RenewableNonDispatch) -> String\n\n\nGet RenewableNonDispatch name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_active_power-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_active_power","text":"get_active_power(value::RenewableNonDispatch) -> Any\n\n\nGet RenewableNonDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_available-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_available","text":"get_available(value::RenewableNonDispatch) -> Bool\n\n\nGet RenewableNonDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_base_power-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_base_power","text":"get_base_power(value::RenewableNonDispatch) -> Float64\n\n\nGet RenewableNonDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_bus-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_bus","text":"get_bus(value::RenewableNonDispatch) -> ACBus\n\n\nGet RenewableNonDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_dynamic_injector-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::RenewableNonDispatch\n) -> Union{Nothing, DynamicInjection}\n\n\nGet RenewableNonDispatch dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_ext-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_ext","text":"get_ext(value::RenewableNonDispatch) -> Dict{String, Any}\n\n\nGet RenewableNonDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_power_factor-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_power_factor","text":"get_power_factor(value::RenewableNonDispatch) -> Float64\n\n\nGet RenewableNonDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_prime_mover_type-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::RenewableNonDispatch\n) -> PrimeMovers\n\n\nGet RenewableNonDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_rating-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_rating","text":"get_rating(value::RenewableNonDispatch) -> Any\n\n\nGet RenewableNonDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_reactive_power-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::RenewableNonDispatch) -> Any\n\n\nGet RenewableNonDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.get_services-Tuple{RenewableNonDispatch}","page":"RenewableNonDispatch","title":"PowerSystems.get_services","text":"get_services(value::RenewableNonDispatch) -> Vector{Service}\n\n\nGet RenewableNonDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_active_power!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_available!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_available!","text":"set_available!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_base_power!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_bus!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_bus!","text":"set_bus!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_ext!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_power_factor!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_power_factor!","text":"set_power_factor!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_prime_mover_type!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(\n value::RenewableNonDispatch,\n val\n) -> Any\n\n\nSet RenewableNonDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_rating!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_rating!","text":"set_rating!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_reactive_power!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableNonDispatch/#PowerSystems.set_services!-Tuple{RenewableNonDispatch, Any}","page":"RenewableNonDispatch","title":"PowerSystems.set_services!","text":"set_services!(value::RenewableNonDispatch, val) -> Any\n\n\nSet RenewableNonDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#OutputCurrentLimiter","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/#HybridOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"HybridOutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"Modules = [PowerSystems]\nPages = [\"/HybridOutputCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.HybridOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PowerSystems.HybridOutputCurrentLimiter","text":"mutable struct HybridOutputCurrentLimiter <: OutputCurrentLimiter\n I_max::Float64\n rv::Float64\n lv::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Hybrid Current Controller Limiter. Regulates the magnitude of the inverter output current, but with a closed loop feedback regulated by a virtual impedance which provides ant-windup. Described in: Novel Hybrid Current Limiter for Grid-Forming Inverter Control During Unbalanced Faults by Baeckland and Seo, 2023 \n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)\nrv::Float64: Real part of the virtual impedance, validation range: (0, nothing)\nlv::Float64: Imaginary part of the virtual impedance, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}())\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_I_max-Tuple{HybridOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::HybridOutputCurrentLimiter) -> Float64\n\n\nGet HybridOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ext-Tuple{HybridOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::HybridOutputCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet HybridOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_lv-Tuple{HybridOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_lv","text":"get_lv(value::HybridOutputCurrentLimiter) -> Float64\n\n\nGet HybridOutputCurrentLimiter lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_rv-Tuple{HybridOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_rv","text":"get_rv(value::HybridOutputCurrentLimiter) -> Float64\n\n\nGet HybridOutputCurrentLimiter rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_I_max!-Tuple{HybridOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::HybridOutputCurrentLimiter, val) -> Any\n\n\nSet HybridOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ext!-Tuple{HybridOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::HybridOutputCurrentLimiter, val) -> Any\n\n\nSet HybridOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_lv!-Tuple{HybridOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_lv!","text":"set_lv!(value::HybridOutputCurrentLimiter, val) -> Any\n\n\nSet HybridOutputCurrentLimiter lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_rv!-Tuple{HybridOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_rv!","text":"set_rv!(value::HybridOutputCurrentLimiter, val) -> Any\n\n\nSet HybridOutputCurrentLimiter rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#InstantaneousOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"InstantaneousOutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"Modules = [PowerSystems]\nPages = [\"/InstantaneousOutputCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.InstantaneousOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PowerSystems.InstantaneousOutputCurrentLimiter","text":"mutable struct InstantaneousOutputCurrentLimiter <: OutputCurrentLimiter\n Id_max::Float64\n Iq_max::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Instantaneous (Square) Current Controller Limiter. Regulates inverter output current on the d and q axis separately\n\nArguments\n\nId_max::Float64: Maximum limit on d-axis current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)\nIq_max::Float64: Maximum limit on d-axis current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_Id_max-Tuple{InstantaneousOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_Id_max","text":"get_Id_max(\n value::InstantaneousOutputCurrentLimiter\n) -> Float64\n\n\nGet InstantaneousOutputCurrentLimiter Id_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_Iq_max-Tuple{InstantaneousOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_Iq_max","text":"get_Iq_max(\n value::InstantaneousOutputCurrentLimiter\n) -> Float64\n\n\nGet InstantaneousOutputCurrentLimiter Iq_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ext-Tuple{InstantaneousOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::InstantaneousOutputCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet InstantaneousOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_Id_max!-Tuple{InstantaneousOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_Id_max!","text":"set_Id_max!(\n value::InstantaneousOutputCurrentLimiter,\n val\n) -> Any\n\n\nSet InstantaneousOutputCurrentLimiter Id_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_Iq_max!-Tuple{InstantaneousOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_Iq_max!","text":"set_Iq_max!(\n value::InstantaneousOutputCurrentLimiter,\n val\n) -> Any\n\n\nSet InstantaneousOutputCurrentLimiter Iq_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ext!-Tuple{InstantaneousOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::InstantaneousOutputCurrentLimiter,\n val\n) -> Any\n\n\nSet InstantaneousOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#MagnitudeOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"MagnitudeOutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"Modules = [PowerSystems]\nPages = [\"/MagnitudeOutputCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.MagnitudeOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PowerSystems.MagnitudeOutputCurrentLimiter","text":"mutable struct MagnitudeOutputCurrentLimiter <: OutputCurrentLimiter\n I_max::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Magnitude (Circular) Current Controller Limiter. Regulates only the magnitude of the inverter output current\n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_I_max-Tuple{MagnitudeOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::MagnitudeOutputCurrentLimiter) -> Float64\n\n\nGet MagnitudeOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ext-Tuple{MagnitudeOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::MagnitudeOutputCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet MagnitudeOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_I_max!-Tuple{MagnitudeOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::MagnitudeOutputCurrentLimiter, val) -> Any\n\n\nSet MagnitudeOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ext!-Tuple{MagnitudeOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::MagnitudeOutputCurrentLimiter, val) -> Any\n\n\nSet MagnitudeOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PriorityOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PriorityOutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"Modules = [PowerSystems]\nPages = [\"/PriorityOutputCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.PriorityOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PowerSystems.PriorityOutputCurrentLimiter","text":"mutable struct PriorityOutputCurrentLimiter <: OutputCurrentLimiter\n I_max::Float64\n ϕ_I::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Priority-Based Current Controller Limiter. Regulates the magnitude of the inverter output current and prioritizes a specific angle for the resultant current signal\n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current in pu (DEVICE_BASE), validation range: (0, nothing)\nϕ_I::Float64: Pre-defined angle (measured against the d-axis) for Iref once limit Imax is hit, validation range: (-1.571, 1.571)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_I_max-Tuple{PriorityOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::PriorityOutputCurrentLimiter) -> Float64\n\n\nGet PriorityOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ext-Tuple{PriorityOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::PriorityOutputCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet PriorityOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ϕ_I-Tuple{PriorityOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ϕ_I","text":"get_ϕ_I(value::PriorityOutputCurrentLimiter) -> Float64\n\n\nGet PriorityOutputCurrentLimiter ϕ_I.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_I_max!-Tuple{PriorityOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::PriorityOutputCurrentLimiter, val) -> Any\n\n\nSet PriorityOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ext!-Tuple{PriorityOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::PriorityOutputCurrentLimiter, val) -> Any\n\n\nSet PriorityOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ϕ_I!-Tuple{PriorityOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ϕ_I!","text":"set_ϕ_I!(value::PriorityOutputCurrentLimiter, val) -> Any\n\n\nSet PriorityOutputCurrentLimiter ϕ_I.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#SaturationOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"SaturationOutputCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_OutputCurrentLimiter/","page":"OutputCurrentLimiter","title":"OutputCurrentLimiter","text":"Modules = [PowerSystems]\nPages = [\"/SaturationOutputCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.SaturationOutputCurrentLimiter","page":"OutputCurrentLimiter","title":"PowerSystems.SaturationOutputCurrentLimiter","text":"mutable struct SaturationOutputCurrentLimiter <: OutputCurrentLimiter\n I_max::Float64\n kw::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Saturation Current Controller Limiter. Regulates the magnitude of the inverter output current, and applies a closed loop feedback regulated by a static gain which provides ant-windup\n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)\nkw::Float64: Defined feedback gain, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}())\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_I_max-Tuple{SaturationOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::SaturationOutputCurrentLimiter) -> Float64\n\n\nGet SaturationOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_ext-Tuple{SaturationOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::SaturationOutputCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet SaturationOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.get_kw-Tuple{SaturationOutputCurrentLimiter}","page":"OutputCurrentLimiter","title":"PowerSystems.get_kw","text":"get_kw(value::SaturationOutputCurrentLimiter) -> Float64\n\n\nGet SaturationOutputCurrentLimiter kw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_I_max!-Tuple{SaturationOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(\n value::SaturationOutputCurrentLimiter,\n val\n) -> Any\n\n\nSet SaturationOutputCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_ext!-Tuple{SaturationOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::SaturationOutputCurrentLimiter, val) -> Any\n\n\nSet SaturationOutputCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_OutputCurrentLimiter/#PowerSystems.set_kw!-Tuple{SaturationOutputCurrentLimiter, Any}","page":"OutputCurrentLimiter","title":"PowerSystems.set_kw!","text":"set_kw!(value::SaturationOutputCurrentLimiter, val) -> Any\n\n\nSet SaturationOutputCurrentLimiter kw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#TapTransformer","page":"TapTransformer","title":"TapTransformer","text":"","category":"section"},{"location":"model_library/generated_TapTransformer/","page":"TapTransformer","title":"TapTransformer","text":"Modules = [PowerSystems]\nPages = [\"generated/TapTransformer.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TapTransformer/#PowerSystems.TapTransformer","page":"TapTransformer","title":"PowerSystems.TapTransformer","text":"mutable struct TapTransformer <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n tap::Float64\n rating::Union{Nothing, Float64}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA 2-winding transformer, with a tap changer for variable turns ratio.\n\nThe model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow through the transformer (MW)\nreactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)\narc::Arc: An Arc defining this transformer from a bus to another bus\nr::Float64: Resistance in p.u. (SYSTEM_BASE), validation range: (-2, 2)\nx::Float64: Reactance in p.u. (SYSTEM_BASE), validation range: (-2, 4)\nprimary_shunt::Float64: Shunt reactance in p.u. (SYSTEM_BASE), validation range: (0, 2)\ntap::Float64: Normalized tap changer position for voltage control, varying between 0 and 2, with 1 centered at the nominal voltage, validation range: (0, 2)\nrating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TapTransformer/#InfrastructureSystems.get_name-Tuple{TapTransformer}","page":"TapTransformer","title":"InfrastructureSystems.get_name","text":"get_name(value::TapTransformer) -> String\n\n\nGet TapTransformer name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_active_power_flow-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TapTransformer) -> Any\n\n\nGet TapTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_arc-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_arc","text":"get_arc(value::TapTransformer) -> Arc\n\n\nGet TapTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_available-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_available","text":"get_available(value::TapTransformer) -> Bool\n\n\nGet TapTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_ext-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_ext","text":"get_ext(value::TapTransformer) -> Dict{String, Any}\n\n\nGet TapTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_primary_shunt-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(value::TapTransformer) -> Float64\n\n\nGet TapTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_r-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_r","text":"get_r(value::TapTransformer) -> Float64\n\n\nGet TapTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_rating-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_rating","text":"get_rating(value::TapTransformer) -> Any\n\n\nGet TapTransformer rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_reactive_power_flow-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::TapTransformer) -> Any\n\n\nGet TapTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_services-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_services","text":"get_services(value::TapTransformer) -> Vector{Service}\n\n\nGet TapTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_tap-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_tap","text":"get_tap(value::TapTransformer) -> Float64\n\n\nGet TapTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_x-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_x","text":"get_x(value::TapTransformer) -> Float64\n\n\nGet TapTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_active_power_flow!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_arc!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_arc!","text":"set_arc!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_available!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_available!","text":"set_available!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_ext!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_ext!","text":"set_ext!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_primary_shunt!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_r!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_r!","text":"set_r!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_rating!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_rating!","text":"set_rating!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_reactive_power_flow!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_services!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_services!","text":"set_services!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_tap!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_tap!","text":"set_tap!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_x!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_x!","text":"set_x!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#StorageCost","page":"StorageCost","title":"StorageCost","text":"","category":"section"},{"location":"model_library/storage_cost/","page":"StorageCost","title":"StorageCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/StorageCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/storage_cost/#PowerSystems.StorageCost","page":"StorageCost","title":"PowerSystems.StorageCost","text":"mutable struct StorageCost <: OperationalCost\n\ncharge_variable_cost::CostCurve: (default of 0) Variable cost of charging represented as a CostCurve\ndischarge_variable_cost::CostCurve: (default of 0) Variable cost of discharging represented as a CostCurve\nfixed::Float64: (default: 0) Fixed cost of operating the storage system\nstart_up::Union{Float64, @NamedTuple{charge::Float64, discharge::Float64}}: (default: 0) Start-up cost\nshut_down::Float64: (default: 0) Shut-down cost\nenergy_shortage_cost::Float64: (default: 0) Cost incurred by the model for being short of the energy target\nenergy_surplus_cost::Float64: (default: 0) Cost incurred by the model for surplus energy stored\n\nStorageCost(charge_variable_cost, discharge_variable_cost, fixed, start_up, shut_down, energy_shortage_cost, energy_surplus_cost)\nStorageCost(; charge_variable_cost, discharge_variable_cost, fixed, start_up, shut_down, energy_shortage_cost, energy_surplus_cost)\n\nAn operational cost for storage units including fixed costs and variable costs to charge or discharge.\n\nThis data structure is not intended to represent market storage systems market operations like the submission of buy/sell bids – see MarketBidCost instead.\n\n\n\n\n\n","category":"type"},{"location":"model_library/storage_cost/#PowerSystems.get_charge_variable_cost-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_charge_variable_cost","text":"get_charge_variable_cost(value::StorageCost) -> CostCurve\n\n\nGet StorageCost charge_variable_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_discharge_variable_cost-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_discharge_variable_cost","text":"get_discharge_variable_cost(value::StorageCost) -> CostCurve\n\n\nGet StorageCost discharge_variable_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_energy_shortage_cost-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_energy_shortage_cost","text":"get_energy_shortage_cost(value::StorageCost) -> Float64\n\n\nGet StorageCost energy_shortage_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_energy_surplus_cost-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_energy_surplus_cost","text":"get_energy_surplus_cost(value::StorageCost) -> Float64\n\n\nGet StorageCost energy_surplus_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_fixed-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::StorageCost) -> Float64\n\n\nGet StorageCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_shut_down-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::StorageCost) -> Float64\n\n\nGet StorageCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.get_start_up-Tuple{StorageCost}","page":"StorageCost","title":"PowerSystems.get_start_up","text":"get_start_up(\n value::StorageCost\n) -> Union{Float64, @NamedTuple{charge::Float64, discharge::Float64}}\n\n\nGet StorageCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_charge_variable_cost!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_charge_variable_cost!","text":"set_charge_variable_cost!(value::StorageCost, val) -> Any\n\n\nSet StorageCost charge_variable_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_discharge_variable_cost!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_discharge_variable_cost!","text":"set_discharge_variable_cost!(value::StorageCost, val) -> Any\n\n\nSet StorageCost discharge_variable_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_energy_shortage_cost!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_energy_shortage_cost!","text":"set_energy_shortage_cost!(value::StorageCost, val) -> Any\n\n\nSet StorageCost energy_shortage_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_energy_surplus_cost!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_energy_surplus_cost!","text":"set_energy_surplus_cost!(value::StorageCost, val) -> Any\n\n\nSet StorageCost energy_surplus_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_fixed!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::StorageCost, val) -> Any\n\n\nSet StorageCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_shut_down!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::StorageCost, val) -> Any\n\n\nSet StorageCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/storage_cost/#PowerSystems.set_start_up!-Tuple{StorageCost, Any}","page":"StorageCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::StorageCost, val) -> Any\n\n\nSet StorageCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"explanation/dynamic_data/#Dynamic-Devices","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"section"},{"location":"explanation/dynamic_data/#Static-and-Dynamic-Data-Layers","page":"Dynamic Devices","title":"Static and Dynamic Data Layers","text":"","category":"section"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"PowerSystems.jl uses two categories to define data for dynamic simulations:","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Static components, which includes the data needed to run a power flow problem\nDynamic components are those that define differential equations to run a transient simulation. These dynamic data are attached to the static components.","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Although PowerSystems.jl is not constrained to only PSS/e files, commonly the data for a dynamic simulation comes in a pair of files: One for the static data power flow case (e.g., .raw file) and a second one with the dynamic components information (e.g., .dyr file). However, PowerSystems.jl is able to take any power flow case and specify dynamic components to it. The two data layers in PowerSystems.jl are similar to the data division between those two files.","category":"page"},{"location":"explanation/dynamic_data/#Layer-1:-Static-Components","page":"Dynamic Devices","title":"Layer 1: Static Components","text":"","category":"section"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"The first data layer contains all the information necessary to run a power flow problem:","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Vector of Bus elements, that define all the buses in the network.\nVector of Branch elements, that define all the branches elements (that connect two buses) in the network.\nVector of StaticInjection elements, that define all the devices connected to buses that can inject (or withdraw) power. These static devices, typically generators, in PowerSimulationsDynamics are used to solve the Power Flow problem that determines the active and reactive power provided for each device.\nVector of PowerLoad elements, that define all the loads connected to buses that can withdraw current. These are also used to solve the Power Flow.\nVector of Source elements, that define source components behind a reactance that can inject or withdraw current.\nThe base of power used to define per unit values, in MVA as a Float64 value.\nThe base frequency used in the system, in Hz as a Float64 value.","category":"page"},{"location":"explanation/dynamic_data/#Layer-2:-Dynamic-Components","page":"Dynamic Devices","title":"Layer 2: Dynamic Components","text":"","category":"section"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"The second data layer contains the additional information describing the dynamic response of certain components in the System. This data is all attached to components defined in the static data layer:","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"(Optional) Selecting which of the Lines (of the Branch vector) elements must be modeled of DynamicLines elements, that can be used to model lines with differential equations.\nVector of DynamicInjection elements. These components must be attached to a StaticInjection that connects the power flow solution to the dynamic formulation of such device.","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"DynamicInjection can be DynamicGenerator or DynamicInverter, and its specific formulation (i.e. differential equations) will depend on the specific components that define each device (see the sections below). As a result, it is possible to flexibly define dynamic data models and methods according to the analysis requirements. DynamicInjection components use a parametric type pattern to materialize the full specification of the dynamic injection model with parameters. This design enable the use of parametric methods to specify the mathematical model of the dynamic components separately.","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"DynamicInjection components also implement some additional information useful for the modeling, like the usual states assumed by the model and the number of states. These values are derived from the documentation associated with the model, for instance PSS/e models provide parameters, states and variables. Although PowerSystems.jl doesn't assume a specific mathematical model for the components, the default values for these parameters are derived directly from the data model source.","category":"page"},{"location":"explanation/dynamic_data/#Dynamic-Generator-Structure","page":"Dynamic Devices","title":"Dynamic Generator Structure","text":"","category":"section"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Each generator is a data structure that is defined by the following components:","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Machine: That defines the stator electro-magnetic dynamics.\nShaft: That describes the rotor electro-mechanical dynamics.\nAutomatic Voltage Regulator: Electromotive dynamics to model an AVR controller.\nPower System Stabilizer: Control dynamics to define an stabilization signal for the AVR.\nPrime Mover and Turbine Governor: Thermo-mechanical dynamics and associated controllers.","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"page"},{"location":"explanation/dynamic_data/#Dynamic-Inverter-Structure","page":"Dynamic Devices","title":"Dynamic Inverter Structure","text":"","category":"section"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Each inverter is a data structure that is defined by the following components:","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"DC Source: Defines the dynamics of the DC side of the converter.\nFrequency Estimator: That describes how the frequency of the grid can be estimated using the grid voltages. Typically a phase-locked loop (PLL).\nOuter Loop Control: That describes the active and reactive power control dynamics.\nInner Loop Control: That can describe virtual impedance, voltage control and current control dynamics.\nConverter: That describes the dynamics of the pulse width modulation (PWM) or space vector modulation (SVM).\nFilter: Used to connect the converter output to the grid.","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"page"},{"location":"explanation/dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"⠀ ```","category":"page"},{"location":"model_library/generated_HydroPumpedStorage/#HydroPumpedStorage","page":"HydroPumpedStorage","title":"HydroPumpedStorage","text":"","category":"section"},{"location":"model_library/generated_HydroPumpedStorage/","page":"HydroPumpedStorage","title":"HydroPumpedStorage","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroPumpedStorage.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.HydroPumpedStorage","page":"HydroPumpedStorage","title":"PowerSystems.HydroPumpedStorage","text":"mutable struct HydroPumpedStorage <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n base_power::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n rating_pump::Float64\n active_power_limits_pump::MinMax\n reactive_power_limits_pump::Union{Nothing, MinMax}\n ramp_limits_pump::Union{Nothing, UpDown}\n time_limits_pump::Union{Nothing, UpDown}\n storage_capacity::UpDown\n inflow::Float64\n outflow::Float64\n initial_storage::UpDown\n storage_target::UpDown\n operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}\n pump_efficiency::Float64\n conversion_factor::Float64\n status::PumpHydroStatus\n time_at_status::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA hydropower generator with pumped storage and upper and lower reservoirs. \n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR)\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW), validation range: (0, nothing)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)\nrating_pump::Float64: Maximum power withdrawal (MVA) of the pump, validation range: (0, nothing)\nactive_power_limits_pump::MinMax:\nreactive_power_limits_pump::Union{Nothing, MinMax}:\nramp_limits_pump::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min of pump, validation range: (0, nothing)\ntime_limits_pump::Union{Nothing, UpDown}: Minimum up and Minimum down time limits of pump in hours, validation range: (0, nothing)\nstorage_capacity::UpDown: Maximum storage capacity in the upper and lower reservoirs (units can be p.u-hr or m^3), validation range: (0, nothing)\ninflow::Float64: Baseline inflow into the upper reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)\noutflow::Float64: Baseline outflow from the lower reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)\ninitial_storage::UpDown: Initial storage capacity in the upper and lower reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)\nstorage_target::UpDown: (default: (up=1.0, down=1.0)) Storage target of upper reservoir at the end of simulation as ratio of storage capacity\noperation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation\npump_efficiency::Float64: (default: 1.0) Pumping efficiency [0, 1.0], validation range: (0, 1)\nconversion_factor::Float64: (default: 1.0) Conversion factor from flow/volume to energy: m^3 -> p.u-hr\nstatus::PumpHydroStatus: (default: PumpHydroStatus.OFF) Initial commitment condition at the start of a simulation (PumpHydroStatus.PUMP, PumpHydroStatus.GEN, or PumpHydroStatus.OFF)\ntime_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been generating, pumping, or off, as indicated by status\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroPumpedStorage/#InfrastructureSystems.get_name-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroPumpedStorage) -> String\n\n\nGet HydroPumpedStorage name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroPumpedStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power_limits_pump","text":"get_active_power_limits_pump(\n value::HydroPumpedStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage active_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_available-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_available","text":"get_available(value::HydroPumpedStorage) -> Bool\n\n\nGet HydroPumpedStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_base_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_bus-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_bus","text":"get_bus(value::HydroPumpedStorage) -> ACBus\n\n\nGet HydroPumpedStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_conversion_factor-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_conversion_factor","text":"get_conversion_factor(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_dynamic_injector-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroPumpedStorage\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroPumpedStorage dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ext-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ext","text":"get_ext(value::HydroPumpedStorage) -> Dict{String, Any}\n\n\nGet HydroPumpedStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_inflow-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_inflow","text":"get_inflow(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_initial_storage-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_initial_storage","text":"get_initial_storage(\n value::HydroPumpedStorage\n) -> NamedTuple{(:up, :down), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_operation_cost-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroPumpedStorage\n) -> Union{HydroGenerationCost, MarketBidCost, StorageCost}\n\n\nGet HydroPumpedStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_outflow-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_outflow","text":"get_outflow(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage outflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_prime_mover_type-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::HydroPumpedStorage\n) -> PrimeMovers\n\n\nGet HydroPumpedStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_pump_efficiency-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_pump_efficiency","text":"get_pump_efficiency(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage pump_efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ramp_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ramp_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ramp_limits_pump","text":"get_ramp_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage ramp_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_rating-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_rating","text":"get_rating(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_rating_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_rating_pump","text":"get_rating_pump(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage rating_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power_limits_pump","text":"get_reactive_power_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage reactive_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_services-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_services","text":"get_services(value::HydroPumpedStorage) -> Vector{Service}\n\n\nGet HydroPumpedStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_status-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_status","text":"get_status(\n value::HydroPumpedStorage\n) -> PowerSystems.PumpHydroStatusModule.PumpHydroStatus\n\n\nGet HydroPumpedStorage status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_storage_capacity-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_storage_capacity","text":"get_storage_capacity(\n value::HydroPumpedStorage\n) -> NamedTuple{(:up, :down), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_storage_target-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_storage_target","text":"get_storage_target(\n value::HydroPumpedStorage\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nGet HydroPumpedStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_at_status-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroPumpedStorage time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_limits_pump","text":"get_time_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroPumpedStorage time_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power_limits_pump!","text":"set_active_power_limits_pump!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage active_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_available!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_available!","text":"set_available!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_base_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_bus!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_conversion_factor!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_conversion_factor!","text":"set_conversion_factor!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ext!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_inflow!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_inflow!","text":"set_inflow!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_initial_storage!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_initial_storage!","text":"set_initial_storage!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_operation_cost!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_outflow!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_outflow!","text":"set_outflow!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage outflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_prime_mover_type!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_pump_efficiency!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_pump_efficiency!","text":"set_pump_efficiency!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage pump_efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ramp_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ramp_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ramp_limits_pump!","text":"set_ramp_limits_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ramp_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_rating!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_rating_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_rating_pump!","text":"set_rating_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage rating_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power_limits_pump!","text":"set_reactive_power_limits_pump!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage reactive_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_services!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_services!","text":"set_services!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_status!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_status!","text":"set_status!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_storage_capacity!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_storage_capacity!","text":"set_storage_capacity!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_storage_target!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_at_status!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_limits_pump!","text":"set_time_limits_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#DynamicExponentialLoad","page":"DynamicExponentialLoad","title":"DynamicExponentialLoad","text":"","category":"section"},{"location":"model_library/generated_DynamicExponentialLoad/","page":"DynamicExponentialLoad","title":"DynamicExponentialLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/DynamicExponentialLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.DynamicExponentialLoad","page":"DynamicExponentialLoad","title":"PowerSystems.DynamicExponentialLoad","text":"mutable struct DynamicExponentialLoad <: DynamicInjection\n name::String\n a::Float64\n b::Float64\n α::Float64\n β::Float64\n T_p::Float64\n T_q::Float64\n ext::Dict{String, Any}\n base_power::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 2-states of a generic dynamic load model based on \"Voltage stability analysis using generic dynamic load models.\"\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\na::Float64: Active power static exponential coefficient, validation range: (0, nothing)\nb::Float64: Reactive power static exponential coefficient, validation range: (0, nothing)\nα::Float64: Active power transient exponential coefficient, validation range: (0, nothing)\nβ::Float64: Reactive power transient exponential coefficient, validation range: (0, nothing)\nT_p::Float64: Active Power Time Constant, validation range: (0, nothing)\nT_q::Float64: Reactive Power Time Constant, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nbase_power::Float64: Base power of the load (MVA) for per unitization\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nx_p: Integrator state of the active power,\nx_q: Integrator state of the reactive power,\n\nn_states::Int: (Do not modify.) DynamicExponentialLoad has 2 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DynamicExponentialLoad/#InfrastructureSystems.get_name-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::DynamicExponentialLoad) -> String\n\n\nGet DynamicExponentialLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_T_p-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_T_p","text":"get_T_p(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_T_q-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_T_q","text":"get_T_q(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad T_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_a-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_a","text":"get_a(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_b-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_b","text":"get_b(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_base_power-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_ext-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_ext","text":"get_ext(value::DynamicExponentialLoad) -> Dict{String, Any}\n\n\nGet DynamicExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_n_states-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_n_states","text":"get_n_states(value::DynamicExponentialLoad) -> Int64\n\n\nGet DynamicExponentialLoad n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_states-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_states","text":"get_states(value::DynamicExponentialLoad) -> Vector{Symbol}\n\n\nGet DynamicExponentialLoad states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_α-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_α","text":"get_α(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.get_β-Tuple{DynamicExponentialLoad}","page":"DynamicExponentialLoad","title":"PowerSystems.get_β","text":"get_β(value::DynamicExponentialLoad) -> Float64\n\n\nGet DynamicExponentialLoad β.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_T_p!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_T_p!","text":"set_T_p!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_T_q!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_T_q!","text":"set_T_q!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad T_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_a!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_a!","text":"set_a!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_b!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_b!","text":"set_b!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_base_power!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_ext!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_α!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_α!","text":"set_α!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DynamicExponentialLoad/#PowerSystems.set_β!-Tuple{DynamicExponentialLoad, Any}","page":"DynamicExponentialLoad","title":"PowerSystems.set_β!","text":"set_β!(value::DynamicExponentialLoad, val) -> Any\n\n\nSet DynamicExponentialLoad β.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#ActiveConstantPowerLoad","page":"ActiveConstantPowerLoad","title":"ActiveConstantPowerLoad","text":"","category":"section"},{"location":"model_library/generated_ActiveConstantPowerLoad/","page":"ActiveConstantPowerLoad","title":"ActiveConstantPowerLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/ActiveConstantPowerLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.ActiveConstantPowerLoad","page":"ActiveConstantPowerLoad","title":"PowerSystems.ActiveConstantPowerLoad","text":"mutable struct ActiveConstantPowerLoad <: DynamicInjection\n name::String\n r_load::Float64\n c_dc::Float64\n rf::Float64\n lf::Float64\n cf::Float64\n rg::Float64\n lg::Float64\n kp_pll::Float64\n ki_pll::Float64\n kpv::Float64\n kiv::Float64\n kpc::Float64\n kic::Float64\n base_power::Float64\n ext::Dict{String, Any}\n P_ref::Float64\n Q_ref::Float64\n V_ref::Float64\n ω_ref::Float64\n is_filter_differential::Int\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 12-states active power load based on the paper, \"Dynamic Stability of a Microgrid With an Active Load.\"\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nr_load::Float64: DC-side resistor, validation range: (0, nothing)\nc_dc::Float64: DC-side capacitor, validation range: (0, nothing)\nrf::Float64: Converter side filter resistance, validation range: (0, nothing)\nlf::Float64: Converter side filter inductance, validation range: (0, nothing)\ncf::Float64: AC Converter filter capacitance, validation range: (0, nothing)\nrg::Float64: Network side filter resistance, validation range: (0, nothing)\nlg::Float64: Network side filter inductance, validation range: (0, nothing)\nkp_pll::Float64: Proportional constant for PI-PLL block, validation range: (0, nothing)\nki_pll::Float64: Integral constant for PI-PLL block, validation range: (0, nothing)\nkpv::Float64: Proportional constant for Voltage Control block, validation range: (0, nothing)\nkiv::Float64: Integral constant for Voltage Control block, validation range: (0, nothing)\nkpc::Float64: Proportional constant for Current Control block, validation range: (0, nothing)\nkic::Float64: Integral constant for Current Control block, validation range: (0, nothing)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nP_ref::Float64: Reference active power (pu)\nQ_ref::Float64: Reference reactive power (pu)\nV_ref::Float64: Reference voltage (pu)\nω_ref::Float64: Reference frequency (pu)\nis_filter_differential::Int: Boolean to decide if filter states are differential or algebraic\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nθ_pll: PLL deviation angle, \nϵ_pll: PLL integrator state, \nη: DC-voltage controller integrator state, \nv_dc: DC voltage at the capacitor, \nγd: d-axis Current controller integrator state, \nγq: q-axis Current controller integrator state, \nir_cnv: Real current out of the converter,\nii_cnv: Imaginary current out of the converter,\nvr_filter: Real voltage at the filter's capacitor,\nvi_filter: Imaginary voltage at the filter's capacitor,\nir_filter: Real current out of the filter,\nii_filter: Imaginary current out of the filter\n\nn_states::Int: (Do not modify.) ActiveConstantPowerLoad has 12 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ActiveConstantPowerLoad/#InfrastructureSystems.get_name-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::ActiveConstantPowerLoad) -> String\n\n\nGet ActiveConstantPowerLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_P_ref-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_Q_ref-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_V_ref-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_base_power-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_c_dc-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_c_dc","text":"get_c_dc(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad c_dc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_cf-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_cf","text":"get_cf(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_ext-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_ext","text":"get_ext(value::ActiveConstantPowerLoad) -> Dict{String, Any}\n\n\nGet ActiveConstantPowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_is_filter_differential-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_is_filter_differential","text":"get_is_filter_differential(\n value::ActiveConstantPowerLoad\n) -> Int64\n\n\nGet ActiveConstantPowerLoad is_filter_differential.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_ki_pll-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_ki_pll","text":"get_ki_pll(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_kic-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_kic","text":"get_kic(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_kiv-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_kiv","text":"get_kiv(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_kp_pll-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_kp_pll","text":"get_kp_pll(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_kpc-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_kpc","text":"get_kpc(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_kpv-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_kpv","text":"get_kpv(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_lf-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_lf","text":"get_lf(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_lg-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_lg","text":"get_lg(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_n_states-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_n_states","text":"get_n_states(value::ActiveConstantPowerLoad) -> Int64\n\n\nGet ActiveConstantPowerLoad n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_r_load-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_r_load","text":"get_r_load(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad r_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_rf-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_rf","text":"get_rf(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_rg-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_rg","text":"get_rg(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_states-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_states","text":"get_states(value::ActiveConstantPowerLoad) -> Vector{Symbol}\n\n\nGet ActiveConstantPowerLoad states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.get_ω_ref-Tuple{ActiveConstantPowerLoad}","page":"ActiveConstantPowerLoad","title":"PowerSystems.get_ω_ref","text":"get_ω_ref(value::ActiveConstantPowerLoad) -> Float64\n\n\nGet ActiveConstantPowerLoad ω_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_P_ref!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_Q_ref!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_V_ref!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_base_power!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_c_dc!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_c_dc!","text":"set_c_dc!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad c_dc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_cf!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_cf!","text":"set_cf!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_ext!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_is_filter_differential!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_is_filter_differential!","text":"set_is_filter_differential!(\n value::ActiveConstantPowerLoad,\n val\n) -> Any\n\n\nSet ActiveConstantPowerLoad is_filter_differential.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_ki_pll!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_ki_pll!","text":"set_ki_pll!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_kic!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_kic!","text":"set_kic!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_kiv!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_kiv!","text":"set_kiv!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_kp_pll!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_kp_pll!","text":"set_kp_pll!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_kpc!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_kpc!","text":"set_kpc!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_kpv!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_kpv!","text":"set_kpv!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_lf!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_lf!","text":"set_lf!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_lg!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_lg!","text":"set_lg!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_r_load!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_r_load!","text":"set_r_load!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad r_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_rf!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_rf!","text":"set_rf!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_rg!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_rg!","text":"set_rg!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ActiveConstantPowerLoad/#PowerSystems.set_ω_ref!-Tuple{ActiveConstantPowerLoad, Any}","page":"ActiveConstantPowerLoad","title":"PowerSystems.set_ω_ref!","text":"set_ω_ref!(value::ActiveConstantPowerLoad, val) -> Any\n\n\nSet ActiveConstantPowerLoad ω_ref.\n\n\n\n\n\n","category":"method"},{"location":"how_to/get_available_generators/#Get-the-available-generators-in-a-System","page":"...get the available generators in a system","title":"Get the available generators in a System","text":"","category":"section"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"using PowerSystems; #hide\nusing PowerSystemCaseBuilder #hide\nsystem = build_system(PSISystems, \"modified_RTS_GMLC_DA_sys\"); #hide","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"You can access use get_available_components or get_components to access all the available generators in an existing system.","category":"page"},{"location":"how_to/get_available_generators/#Option-1a:-Using-get_available_components-to-get-an-iterator","page":"...get the available generators in a system","title":"Option 1a: Using get_available_components to get an iterator","text":"","category":"section"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"Use get_available_components to get an iterator of all the available generators in an existing system, which also prints a summary:","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"gen_iter = get_available_components(Generator, system)","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"The iterator avoids unnecessary memory allocations if there are many generators, and it can be used to view or update the generator data, such as seeing each of the names:","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"get_name.(gen_iter)","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"tip: Tip\nAbove, we use the abstract supertype Generator to get all components that are subtypes of it. You can instead get all the components of a concrete type, such as:gen_iter = get_available_components(RenewableDispatch, system)","category":"page"},{"location":"how_to/get_available_generators/#Option-1b:-Using-get_available_components-to-get-a-vector","page":"...get the available generators in a system","title":"Option 1b: Using get_available_components to get a vector","text":"","category":"section"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"Use collect to get a vector of the generators instead of an iterator, which could require a lot of memory:","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"gens = collect(get_available_components(Generator, system));","category":"page"},{"location":"how_to/get_available_generators/#Option-2:-Using-get_components-to-get-an-iterator","page":"...get the available generators in a system","title":"Option 2: Using get_components to get an iterator","text":"","category":"section"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"Alternatively, use get_components with a filter to check for availability:","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"gen_iter = get_components(get_available, Generator, system)","category":"page"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"collect can also be used to turn this iterator into a vector.","category":"page"},{"location":"how_to/get_available_generators/#See-Also","page":"...get the available generators in a system","title":"See Also","text":"","category":"section"},{"location":"how_to/get_available_generators/","page":"...get the available generators in a system","title":"...get the available generators in a system","text":"How to: Get the buses in a System","category":"page"},{"location":"how_to/parse_tabular_data/#table_data","page":"...parse tabular data from .csv files","title":"Parse Tabular Data from .csv Files","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"warning: Warning\nThis parser will be deprecated sometime in the fall of 2024. PowerSystems.jl will be moving to a database solution for handling data. There are plans to eventually include utility functions to translate from .csv files to the database, but there will probably be a gap in support. Users are recommended to write their own custom Julia code to import data from their unique data formats, rather than relying on this parsing code.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"This parser, called the tabular data parser, is a custom format that allows users to define power system component data by category and column with custom names, types, and units.","category":"page"},{"location":"how_to/parse_tabular_data/#Categories","page":"...parse tabular data from .csv files","title":"Categories","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Components for each category must be defined in their own CSV file. The following categories are currently supported:","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"branch.csv\nbus.csv (required)\ncolumns specifying area and zone will create a corresponding set of Area and LoadZone objects.\ncolumns specifying max_active_power or max_reactive_power will create PowerLoad objects when nonzero values are encountered and will contribute to the peak_active_power and peak_reactive_power values for the corresponding LoadZone object.\ndc_branch.csv\ngen.csv\nload.csv\nreserves.csv\nstorage.csv","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"These must reside in the directory passed when constructing PowerSystemTableData.","category":"page"},{"location":"how_to/parse_tabular_data/#Customization","page":"...parse tabular data from .csv files","title":"Customization","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"The tabular data parser in PowerSystems.jl can be customized to read a variety of datasets by configuring:","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"which type of generator (<:Generator) to create based on the fuel and prime mover specifications\nproperty names, units, and per units conversions in *.csv files","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Here is an example of how to construct a System with all customizations listed in this section:","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"data_dir = \"/data/my-data-dir\"\nbase_power = 100.0\ndescriptors = \"./user_descriptors.yaml\"\ntimeseries_metadata_file = \"./timeseries_pointers.json\"\ngenerator_mapping_file = \"./generator_mapping.yaml\"\ndata = PowerSystemTableData(\n data_dir,\n base_power,\n descriptors;\n timeseries_metadata_file = timeseries_metadata_file,\n generator_mapping_file = generator_mapping_file,\n)\nsys = System(data; time_series_in_memory = true)","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Examples configuration files can be found in the RTS-GMLC repo:","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"user_descriptors.yaml\ngenerator_mapping.yaml","category":"page"},{"location":"how_to/parse_tabular_data/#csv_data","page":"...parse tabular data from .csv files","title":"CSV Data Configurations","text":"","category":"section"},{"location":"how_to/parse_tabular_data/#csv_genmap","page":"...parse tabular data from .csv files","title":"Custom construction of generators","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"PowerSystems supports custom construction of subtypes of the abstract type Generator based on fuel and type. The parsing code detects these fields in the raw data and then constructs the concrete type listed in the passed generator mapping file. The default file is src/parsers/generator_mapping.yaml. You can override this behavior by specifying your own file when constructing PowerSystemTableData.","category":"page"},{"location":"how_to/parse_tabular_data/#csv_columns","page":"...parse tabular data from .csv files","title":"Column names","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"PowerSystems provides am input mapping capability that allows you to keep your own column names.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"For example, when parsing raw data for a generator the code expects a column called name. If the raw data instead defines that column as GEN UID then you can change the custom_name field under the generator category to GEN UID in your YAML file.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"To enable the parsing of a custom set of csv files, you can generate a configuration file (such as user_descriptors.yaml) from the defaults, which are stored in src/descriptors/power_system_inputs.json.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"python ./bin/generate_config_file.py ./user_descriptors.yaml","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Next, edit this file with your customizations.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Note that the user-specific customizations are stored in YAML rather than JSON to allow for easier editing. The next few sections describe changes you can make to this YAML file. Do not edit the default JSON file.","category":"page"},{"location":"how_to/parse_tabular_data/#csv_per_unit","page":"...parse tabular data from .csv files","title":"Per-unit conversion","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"For more info on the per-unit conventions in PowerSystems.jl, refer to the per-unit section of the system documentation.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"PowerSystems defines whether it expects a column value to be per-unit system base, per-unit device base, or natural units in power_system_inputs.json. If it expects a per-unit convention that differs from your values then you can set the unit_system in user_descriptors.yaml and PowerSystems will automatically convert the values. For example, if you have a max_active_power value stored in natural units (MW), but power_system_inputs.json specifies unit_system: device_base, you can enter unit_system: natural_units in user_descriptors.yaml and PowerSystems will divide the value by the value of the corresponding entry in the column identified by the base_reference field in power_system_inputs.json. You can also override the base_reference setting by adding base_reference: My Column to make device base per-unit conversion by dividing the value by the entry in My Column. System base per-unit conversions always divide the value by the system base_power value instantiated when constructing a System.","category":"page"},{"location":"how_to/parse_tabular_data/#csv_units","page":"...parse tabular data from .csv files","title":"Unit conversion","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"PowerSystems provides a limited set of unit conversions. For example, if power_system_inputs.json indicates that a value's unit is degrees but your values are in radians then you can set unit: radian in your YAML file. Other valid unit entries include GW, GWh, MW, MWh, kW, and kWh.","category":"page"},{"location":"how_to/parse_tabular_data/#Extending-the-Tabular-Data-Parser","page":"...parse tabular data from .csv files","title":"Extending the Tabular Data Parser","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"This section describes how developers should read columns from raw data files, and assumes you are familiar with the sections above.","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"The main point is that you should not read individual hard-coded column names from DataFrames. The parsing code includes mapping functionality that allows you to use PowerSystems-standard names while letting the users define their own custom names.","category":"page"},{"location":"how_to/parse_tabular_data/#Procedure","page":"...parse tabular data from .csv files","title":"Procedure","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Add an entry to the array of parameters for your category in src/descriptors/power_system_inputs.json according to the following:\nUse snake_case for the name field.\nThe fields name and description are required.\nTry to use a name that is generic and not specific to one dataset.\nIt is recommended that you define unit.\nIf PowerSystems expects the value to be per-unit then you must specify system_per_unit=true.\nPowerSystems has two commonly-used datasets with customized user config files: PowerSystemsTestData and RTS_GMLC. Update both of these files and submit pull requests.\nParse the raw data like in this example:","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"function demo_bus_csv_parser!(data::PowerSystemTableData)\n for bus in iterate_rows(data, BUS::InputCategory)\n @show bus.name, bus.max_active_power, bus.max_reactive_power\n end\nend","category":"page"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"iterate_rows returns a NamedTuple where each name defined in src/descriptors/power_system_inputs.json is a field.","category":"page"},{"location":"how_to/parse_tabular_data/#See-also:","page":"...parse tabular data from .csv files","title":"See also:","text":"","category":"section"},{"location":"how_to/parse_tabular_data/","page":"...parse tabular data from .csv files","title":"...parse tabular data from .csv files","text":"Parsing Matpower or PSS/e RAW Files\nParsing PSS/e DYR Files\nParsing time series","category":"page"},{"location":"api/valuecurve_options/#curve_table","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Operating cost data typically includes both fixed and variable costs. See the how-to on Adding an Operating Cost for a demonstration of defining an operating cost.","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"In PowerSystems.jl, the variable portion of the operating cost can be represented as linear, quadratic, or piecewise input-output curves; potentially piecewise marginal heat rates; average heat rates; and more, as best fits the input data. This is done by constructing various subtypes of ValueCurve.","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"This summary table shows each way to construct a ValueCurve with the user-friendly subtype aliases. The ValueCurves make no assumption about units; the example interpretation given here assumes that the variable cost ValueCurve will be wrapped in a CostCurve with natural units. Note that all four Piecewise options here fundamentally represent the same curve. More information and explanatory plots are provided for each subtype alias in the subheadings below.","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Description Example Example interpretation\nLinear input-output curve with zero no-load cost (constant average rate) LinearCurve(5.0) $5/MWh\nLinear input-output curve with potentially nonzero no-load cost (constant marginal rate) LinearCurve(5.0, 15.0) $5/MWh + $15/hr\nQuadratic input-output curve with potentially nonzero no-load cost QuadraticCurve(1.0, 1.0, 18.0) C(P) = 1 P^2 + 1 P + 18 where C is $/hr, P is MW\nPiecewise linear curve specified by cost values at production points PiecewisePointCurve([(1.0, 20.0), (2.0, 24.0), (3.0, 30.0)]) $20/hr @ 1 MW, $24/hr @ 2 MW, $30/hr @ 3 MW, linear $/hr interpolation between these points\nPiecewise linear curve specified by initial value and marginal rates (slopes) between production points PiecewiseIncrementalCurve(20.0, [1.0, 2.0, 3.0], [4.0, 6.0]) $20/hr @ 1 MW plus additional $4/MWh from 1 MW to 2 MW plus additional $6/MWh from 2 MW to 3 MW\nNo-load cost plus piecewise linear curve specified by initial value and marginal rates (slopes) between production points PiecewiseIncrementalCurve(18.0, 20.0, [1.0, 2.0, 3.0], [4.0, 6.0]) $18/hr no-load cost; $20/hr @ 1 MW plus additional $4/MWh from 1 MW to 2 MW plus additional $6/MWh from 2 MW to 3 MW\nPiecewise linear curve specified by initial value and average rates between production points PiecewiseAverageCurve(20.0, [1.0, 2.0, 3.0], [12.0, 10.0]) $20/hr @ 1 MW, $12/MWh @ 2 MW, $10/MWh @ 3 MW, linear $/hr interpolation between these points","category":"page"},{"location":"api/valuecurve_options/#[LinearCurve](@ref)","page":"ValueCurve Options","title":"LinearCurve","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Specify the marginal cost of production M and optionally the no-load cost C, which defaults to zero. Here is a graphical representation:","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"page"},{"location":"api/valuecurve_options/#[QuadraticCurve](@ref)","page":"ValueCurve Options","title":"QuadraticCurve","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Specify the quadratic (Q), proportional (M), and constant (C) terms of a function that defines the input-output curve:","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"page"},{"location":"api/valuecurve_options/#[PiecewisePointCurve](@ref)","page":"ValueCurve Options","title":"PiecewisePointCurve","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Specify a vector of K (production, cost) pairs (i.e., (P_k C_k) for k = 1 dots K) to define the input-output curve:","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"page"},{"location":"api/valuecurve_options/#[PiecewiseIncrementalCurve](@ref)","page":"ValueCurve Options","title":"PiecewiseIncrementalCurve","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Specify the cost C_1 at the least production point given (NOT the cost at zero production), a vector of K production points P_1 dots P_k, and a vector of K-1 marginal rates M_1 dots M_k-1, that represent the slopes of the curve segments between the points. C_1 may be nothing, which results in a not-fully-defined curve. The no-load cost C_0 can optionally be specified as a first argument; it is not part of the representation of the curve, just another piece of data that may be stored:","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"page"},{"location":"api/valuecurve_options/#[PiecewiseAverageCurve](@ref)","page":"ValueCurve Options","title":"PiecewiseAverageCurve","text":"","category":"section"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"Specify the cost C_1 at the least production point given (NOT the cost at zero production), a vector of K production points P_1 dots P_k, and a vector of K-1 average rates R_1 dots R_k-1 at the K-1 latter production points:","category":"page"},{"location":"api/valuecurve_options/","page":"ValueCurve Options","title":"ValueCurve Options","text":"","category":"page"},{"location":"how_to/migrating_to_psy4/#psy4_migration","page":"...migrate from version 3.0 to 4.0","title":"Migrating from version 3.0 to 4.0","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"This guide outlines the code updates required to upgrade from PowerSystems.jl version 3.0 to 4.0, which was released in June 2024 and includes breaking changes. These are:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Renamed Types and Parameters\nNew and Eliminated Types\nUpdates to Energy Storage Parameters\nHydropower status added\nNew Cost Functions\nNew Time Series Horizon Format\nMinor Type Hierarchy Change\n(Temporary) Use Version 3.0 for HybridSystem (+ new parameter)","category":"page"},{"location":"how_to/migrating_to_psy4/#Renamed-Types-and-Parameters","page":"...migrate from version 3.0 to 4.0","title":"Renamed Types and Parameters","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Some Types and fields were renamed, which should require a trivial search and replace:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Renamed Types:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"RenewableFix is now named RenewableNonDispatch\nStaticReserve is now named ConstantReserve\nStaticReserveGroup is now named ConstantReserveGroup\nStaticReserveNonSpinning is now named ConstantReserveNonSpinning\nPriorityCurrentLimiter is now named PriorityOutputCurrentLimiter\nMagnitudeCurrentLimiter is now named MagnitudeOutputCurrentLimiter\nInstantaneousCurrentLimiter is now named InstantaneousOutputCurrentLimiter","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Renamed parameters:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The rate parameter is now named rating for subtypes of Branch, for consistency with other Types. Affected Types are:\nLine\nMonitoredLine\nPhaseShiftingTransformer\nTapTransformer\nTransformer2W","category":"page"},{"location":"how_to/migrating_to_psy4/#New-and-Eliminated-Types","page":"...migrate from version 3.0 to 4.0","title":"New and Eliminated Types","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"In addition to cost-related types detailed in New Cost Functions, these new types have been added:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"AreaInterchange\nHybridOutputCurrentLimiter\nSaturationOutputCurrentLimiter","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"These types are no longer part of PowerSystems.jl, although there are future plans to rework some of them:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"RegulationDevice\nTransfer\nBatteryEMS\nGenericBattery (see Updates to Energy Storage Parameters)","category":"page"},{"location":"how_to/migrating_to_psy4/#esr_migration","page":"...migrate from version 3.0 to 4.0","title":"Updates to Energy Storage Parameters","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"EnergyReservoirStorage is now the default battery and energy storage model, replacing GenericBattery.","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"There are also changes to the data fields compared to GenericBattery to improve clarity and modeling flexibility.","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"New data fields:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"storage_capacity for the maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen)\nExample: 10000.0 for 10,000 liters hydrogen\nstorage_level_limits for the minimum and maximum allowable storage levels on [0, 1], which can be used to model derates or other restrictions, such as state-of-charge restrictions on battery cycling\nExample: Minimum of 0.2 and maximum of 1.0 to restrict the storage from dropping below 20% capacity to keep some reserve margin available at all times\ninitial_storage_capacity_level for the initial storage capacity level as a ratio [0, 1.0] of storage_capacity\nExample: 0.5 to start the storage at 50% full\nconversion_factor is the (optional) conversion factor of storage_capacity to MWh, if different than 1.0 (i.e., no conversion is needed if the storage_capacity is in MWh)\nExample: 0.0005 for 0.5 kWh/l hydrogen","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Removed data fields:","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"state_of_charge_limits with units of p.u.-hr\ninitial_energy with units of p.u.-hr","category":"page"},{"location":"how_to/migrating_to_psy4/#Hydropower-status-added","page":"...migrate from version 3.0 to 4.0","title":"Hydropower status added","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"A new required parameter, status, was added to HydroEnergyReservoir and HydroPumpedStorage, for the initial condition of the generator.","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"For HydroEnergyReservoir, status can be true = on or false = off.\nFor HydroPumpedStorage, status can be PumpHydroStatus.PUMP, PumpHydroStatus.GEN, or PumpHydroStatus.OFF","category":"page"},{"location":"how_to/migrating_to_psy4/#New-Cost-Functions","page":"...migrate from version 3.0 to 4.0","title":"New Cost Functions","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/#New-Time-Series-Horizon-Format","page":"...migrate from version 3.0 to 4.0","title":"New Time Series Horizon Format","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The horizon for a forecast has changed from a count of time steps (as an Int) to a duration, as a Dates.Period","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Example day-ahead forecast: A forecast with hourly resolution for the next 24 hours, with a new forecast available every 24 hours (i.e., 24-hour interval)","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The horizon is now Dates.Hour(24) or Dates.Day(1)\nPreviously in version 3.0, the horizon would have been 24 for the 24 1-hour time-steps in each forecast","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"Example hour-ahead forecast: A forecast with 5-minute resolution for the next 1 hour, with a new forecast available every hour (i.e., 1-hour interval)","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The horizon is now Dates.Hour(1)\nPreviously in version 3.0, the horizon would have been 12 for the 12 5-minute time-steps in each forecast","category":"page"},{"location":"how_to/migrating_to_psy4/#Minor-Type-Hierarchy-Change","page":"...migrate from version 3.0 to 4.0","title":"Minor Type Hierarchy Change","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"ControllableLoad is now a subtype of StaticLoad rather than ElectricLoad","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The vast majority of users are not expected to be impacted by this change.","category":"page"},{"location":"how_to/migrating_to_psy4/#(Temporary)-Use-Version-3.0-for-HybridSystem-(-new-parameter)","page":"...migrate from version 3.0 to 4.0","title":"(Temporary) Use Version 3.0 for HybridSystem (+ new parameter)","text":"","category":"section"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"The HybridSystem is currently not supported in the rest of the Sienna ecosystem, such as PowerSimulations.jl. To use HybridSystem in simulation, revert to version 3.0. There are plans to update HybridSystem for version 4.0, but they have not been completed.","category":"page"},{"location":"how_to/migrating_to_psy4/","page":"...migrate from version 3.0 to 4.0","title":"...migrate from version 3.0 to 4.0","text":"In addition, HybridSystem has a new required parameter: interconnection_efficiency","category":"page"},{"location":"how_to/market_bid_cost/#Add-a-Market-Bid","page":"...add a market bid","title":"Add a Market Bid","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"A MarketBidCost is an OperationalCost data structure that allows the user to run a production cost model that is very similar to most US electricity market auctions with bids for energy and ancillary services jointly. This page showcases how to create data for this cost function.","category":"page"},{"location":"how_to/market_bid_cost/#Adding-a-Single-Incremental-Energy-bids-to-MarketBidCost","page":"...add a market bid","title":"Adding a Single Incremental Energy bids to MarketBidCost","text":"","category":"section"},{"location":"how_to/market_bid_cost/#Construct-directly-the-MarketBidCost-using-the-make_market_bid_curve-method.","page":"...add a market bid","title":"Construct directly the MarketBidCost using the make_market_bid_curve method.","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"The make_market_bid_curve creates an incremental or decremental offer curve from a vector of n power values, a vector of n-1 marginal costs and single initial input. For example, the following code creates an incremental offer curve:","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"using PowerSystems, Dates\nproposed_offer_curve =\n make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0)","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"Then a device with MarketBidCost can be directly instantiated using:","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"using PowerSystems, Dates\nbus = ACBus(1, \"nodeE\", \"REF\", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing)\n\ngenerator = ThermalStandard(;\n name = \"Brighton\",\n available = true,\n status = true,\n bus = bus,\n active_power = 6.0,\n reactive_power = 1.50,\n rating = 0.75,\n prime_mover_type = PrimeMovers.ST,\n fuel = ThermalFuels.COAL,\n active_power_limits = (min = 0.0, max = 6.0),\n reactive_power_limits = (min = -4.50, max = 4.50),\n time_limits = (up = 0.015, down = 0.015),\n ramp_limits = (up = 5.0, down = 3.0),\n operation_cost = MarketBidCost(;\n no_load_cost = 0.0,\n start_up = (hot = 0.0, warm = 0.0, cold = 0.0),\n shut_down = 0.0,\n incremental_offer_curves = proposed_offer_curve,\n ),\n base_power = 100.0,\n)","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"Similarly, a decremental offer curve can also be created directly using the same helper method:","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"using PowerSystems, Dates\ndecremental_offer =\n make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [30.0, 28.0, 26.0, 25.0], 50.0)","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"and can be added to a MarketBidCost using the field decremental_offer_curves.","category":"page"},{"location":"how_to/market_bid_cost/#Adding-Time-Series-Energy-bids-to-MarketBidCost","page":"...add a market bid","title":"Adding Time Series Energy bids to MarketBidCost","text":"","category":"section"},{"location":"how_to/market_bid_cost/#Step-1:-Constructing-device-with-MarketBidCost","page":"...add a market bid","title":"Step 1: Constructing device with MarketBidCost","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"When using MarketBidCost, the user can add the cost struct to the device specifying only certain elements, at this point the actual energy cost bids don't need to be populated/passed.","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"The code below shows an example how we can create a thermal device with MarketBidCost.","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"using PowerSystems, Dates\nbus = ACBus(1, \"nodeE\", \"REF\", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing)\n\ngenerator = ThermalStandard(;\n name = \"Brighton\",\n available = true,\n status = true,\n bus = bus,\n active_power = 6.0,\n reactive_power = 1.50,\n rating = 0.75,\n prime_mover_type = PrimeMovers.ST,\n fuel = ThermalFuels.COAL,\n active_power_limits = (min = 0.0, max = 6.0),\n reactive_power_limits = (min = -4.50, max = 4.50),\n time_limits = (up = 0.015, down = 0.015),\n ramp_limits = (up = 5.0, down = 3.0),\n operation_cost = MarketBidCost(;\n no_load_cost = 0.0,\n start_up = (hot = 0.0, warm = 0.0, cold = 0.0),\n shut_down = 0.0,\n ),\n base_power = 100.0,\n)","category":"page"},{"location":"how_to/market_bid_cost/#Step-2:-Creating-the-TimeSeriesData-for-the-Market-Bid","page":"...add a market bid","title":"Step 2: Creating the TimeSeriesData for the Market Bid","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"The user is expected to pass the TimeSeriesData that holds the energy bid data which can be of any type (i.e. SingleTimeSeries or Deterministic) and data must be PiecewiseStepData. This data type is created by specifying a vector of n powers, and n-1 marginal costs. The data must be specified in natural units, that is power in MW and marginal cost in /MWh or it will not be accepted when adding to the system. Code below shows an example of how to build a Deterministic TimeSeries.","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"initial_time = Dates.DateTime(\"2020-01-01\")\npsd1 = PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [2.901, 5.8272, 8.941])\npsd2 = PiecewiseStepData([5.0, 7.33, 9.67, 12.0], [3.001, 6.0072, 9.001])\ndata =\n Dict(\n initial_time => [\n psd1,\n psd2,\n ],\n )\ntime_series_data = Deterministic(;\n name = \"variable_cost\",\n data = data,\n resolution = Dates.Hour(1),\n)","category":"page"},{"location":"how_to/market_bid_cost/#Step-3a:-Adding-Energy-Bid-TimeSeriesData-to-the-device","page":"...add a market bid","title":"Step 3a: Adding Energy Bid TimeSeriesData to the device","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"To add energy market bids time-series to the MarketBidCost, use set_variable_cost!. The arguments for set_variable_cost! are:","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"sys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::TimeSeriesData: TimeSeriesData\npower_units::UnitSystem: UnitSystem","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"Currently, time series data only supports natural units for time series data, i.e. MW for power and /MWh for marginal costs.","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"sys = System(100.0, [bus], [generator])\nset_variable_cost!(sys, generator, time_series_data, UnitSystem.NATURAL_UNITS)","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"Note: set_variable_cost! add curves to the incremental_offer_curves in the MarketBidCost. Similarly, set_incremental_variable_cost! can be used to add curves to the incremental_offer_curves. On the other hand, set_decremental_variable_cost! must be used to decremental curves (usually for storage or demand). The creation of the TimeSeriesData is similar to Step 2, using PiecewiseStepData","category":"page"},{"location":"how_to/market_bid_cost/#Step-3b:-Adding-Service-Bid-TimeSeriesData-to-the-device","page":"...add a market bid","title":"Step 3b: Adding Service Bid TimeSeriesData to the device","text":"","category":"section"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"Similar to adding energy market bids, for adding bids for ancillary services, use set_service_bid!.","category":"page"},{"location":"how_to/market_bid_cost/","page":"...add a market bid","title":"...add a market bid","text":"service = VariableReserve{ReserveUp}(\"example_reserve\", true, 0.6, 2.0)\nadd_service!(sys, service, get_component(ThermalStandard, sys, \"Brighton\"))\ndata =\n Dict(Dates.DateTime(\"2020-01-01\") => [650.3, 750.0])\ntime_series_data = Deterministic(;\n name = get_name(service),\n data = data,\n resolution = Dates.Hour(1),\n)\nset_service_bid!(sys, generator, service, time_series_data, UnitSystem.NATURAL_UNITS)","category":"page"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#SimplifiedSingleCageInductionMachine","page":"SimplifiedSingleCageInductionMachine","title":"SimplifiedSingleCageInductionMachine","text":"","category":"section"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/","page":"SimplifiedSingleCageInductionMachine","title":"SimplifiedSingleCageInductionMachine","text":"Modules = [PowerSystems]\nPages = [\"generated/SimplifiedSingleCageInductionMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.SimplifiedSingleCageInductionMachine","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.SimplifiedSingleCageInductionMachine","text":"mutable struct SimplifiedSingleCageInductionMachine <: DynamicInjection\n name::String\n R_s::Float64\n R_r::Float64\n X_ls::Float64\n X_lr::Float64\n X_m::Float64\n H::Float64\n A::Float64\n B::Float64\n base_power::Float64\n ext::Dict{String, Any}\n C::Float64\n τ_ref::Float64\n B_shunt::Float64\n X_ss::Float64\n X_rr::Float64\n X_p::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 3-states three-phase single cage induction machine with quadratic torque-speed relationship\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nR_s::Float64: Armature stator resistance, validation range: (0, nothing)\nR_r::Float64: Rotor resistance, validation range: (0, nothing)\nX_ls::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nX_lr::Float64: Rotor Leakage Reactance, validation range: (0, nothing)\nX_m::Float64: Stator-Rotor Mutual Reactance, validation range: (0, nothing)\nH::Float64: Motor Inertia Constant [s], validation range: (0, nothing)\nA::Float64: Torque-Speed Quadratic Term, validation range: (0, 1)\nB::Float64: Torque-Speed Linear Term, validation range: (0, 1)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nC::Float64: (Do not modify.) Torque-Speed Constant Term\nτ_ref::Float64: Reference torque parameter\nB_shunt::Float64: Susceptance Initialization Corrector Term\nX_ss::Float64: (Do not modify.) Stator self reactance\nX_rr::Float64: (Do not modify.) Rotor self reactance\nX_p::Float64: (Do not modify.) Transient reactance\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψ_qr: rotor flux in the q-axis,\nψ_dr: rotor flux in the d-axis, \nωr: Rotor speed [pu],\n\nn_states::Int: (Do not modify.) SimplifiedSingleCageInductionMachine has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#InfrastructureSystems.get_name-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"InfrastructureSystems.get_name","text":"get_name(\n value::SimplifiedSingleCageInductionMachine\n) -> String\n\n\nGet SimplifiedSingleCageInductionMachine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_A-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_A","text":"get_A(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine A.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_B-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_B","text":"get_B(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine B.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_B_shunt-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_B_shunt","text":"get_B_shunt(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine B_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_C-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_C","text":"get_C(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine C.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_H-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_H","text":"get_H(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_R_r-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_R_r","text":"get_R_r(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine R_r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_R_s-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_R_s","text":"get_R_s(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine R_s.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_lr-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_lr","text":"get_X_lr(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_ls-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_ls","text":"get_X_ls(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_ls.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_m-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_m","text":"get_X_m(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_p-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_p","text":"get_X_p(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_rr-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_rr","text":"get_X_rr(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_rr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_X_ss-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_X_ss","text":"get_X_ss(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine X_ss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_base_power-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_base_power","text":"get_base_power(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_ext-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_ext","text":"get_ext(\n value::SimplifiedSingleCageInductionMachine\n) -> Dict{String, Any}\n\n\nGet SimplifiedSingleCageInductionMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_n_states-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_n_states","text":"get_n_states(\n value::SimplifiedSingleCageInductionMachine\n) -> Int64\n\n\nGet SimplifiedSingleCageInductionMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_states-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_states","text":"get_states(\n value::SimplifiedSingleCageInductionMachine\n) -> Vector{Symbol}\n\n\nGet SimplifiedSingleCageInductionMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.get_τ_ref-Tuple{SimplifiedSingleCageInductionMachine}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.get_τ_ref","text":"get_τ_ref(\n value::SimplifiedSingleCageInductionMachine\n) -> Float64\n\n\nGet SimplifiedSingleCageInductionMachine τ_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_A!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_A!","text":"set_A!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine A.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_B!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_B!","text":"set_B!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine B.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_B_shunt!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_B_shunt!","text":"set_B_shunt!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine B_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_C!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_C!","text":"set_C!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine C.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_H!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_H!","text":"set_H!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_R_r!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_R_r!","text":"set_R_r!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine R_r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_R_s!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_R_s!","text":"set_R_s!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine R_s.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_lr!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_lr!","text":"set_X_lr!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_ls!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_ls!","text":"set_X_ls!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_ls.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_m!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_m!","text":"set_X_m!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_p!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_p!","text":"set_X_p!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_rr!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_rr!","text":"set_X_rr!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_rr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_X_ss!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_X_ss!","text":"set_X_ss!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine X_ss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_base_power!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_base_power!","text":"set_base_power!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_ext!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SimplifiedSingleCageInductionMachine/#PowerSystems.set_τ_ref!-Tuple{SimplifiedSingleCageInductionMachine, Any}","page":"SimplifiedSingleCageInductionMachine","title":"PowerSystems.set_τ_ref!","text":"set_τ_ref!(\n value::SimplifiedSingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SimplifiedSingleCageInductionMachine τ_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#ACBus","page":"ACBus","title":"ACBus","text":"","category":"section"},{"location":"model_library/generated_ACBus/","page":"ACBus","title":"ACBus","text":"Modules = [PowerSystems]\nPages = [\"generated/ACBus.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ACBus/#PowerSystems.ACBus","page":"ACBus","title":"PowerSystems.ACBus","text":"mutable struct ACBus <: Bus\n number::Int\n name::String\n bustype::Union{Nothing, ACBusTypes}\n angle::Union{Nothing, Float64}\n magnitude::Union{Nothing, Float64}\n voltage_limits::Union{Nothing, MinMax}\n base_voltage::Union{Nothing, Float64}\n area::Union{Nothing, Area}\n load_zone::Union{Nothing, LoadZone}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAn AC bus\n\nArguments\n\nnumber::Int: A unique bus identification number (positive integer)\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nbustype::Union{Nothing, ACBusTypes}: Used to describe the connectivity and behavior of this bus. Options are listed here.\nangle::Union{Nothing, Float64}: angle of the bus in radians, validation range: (-1.571, 1.571)\nmagnitude::Union{Nothing, Float64}: voltage as a multiple of base_voltage, validation range: voltage_limits\nvoltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of base_voltage\nbase_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing)\narea::Union{Nothing, Area}: (default: nothing) the area containing the bus\nload_zone::Union{Nothing, LoadZone}: (default: nothing) the load zone containing the bus\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ACBus/#InfrastructureSystems.get_name-Tuple{ACBus}","page":"ACBus","title":"InfrastructureSystems.get_name","text":"get_name(value::ACBus) -> String\n\n\nGet ACBus name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_angle-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_angle","text":"get_angle(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_area-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_area","text":"get_area(value::ACBus) -> Union{Nothing, Area}\n\n\nGet ACBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_base_voltage-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_base_voltage","text":"get_base_voltage(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_bustype-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_bustype","text":"get_bustype(value::ACBus) -> Union{Nothing, ACBusTypes}\n\n\nGet ACBus bustype.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_ext-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_ext","text":"get_ext(value::ACBus) -> Dict{String, Any}\n\n\nGet ACBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_load_zone-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_load_zone","text":"get_load_zone(value::ACBus) -> Union{Nothing, LoadZone}\n\n\nGet ACBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_magnitude-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_magnitude","text":"get_magnitude(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_number-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_number","text":"get_number(value::ACBus) -> Int64\n\n\nGet ACBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_voltage_limits-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_voltage_limits","text":"get_voltage_limits(\n value::ACBus\n) -> Union{Nothing, @NamedTuple{min::Float64, max::Float64}}\n\n\nGet ACBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_angle!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_angle!","text":"set_angle!(value::ACBus, val) -> Any\n\n\nSet ACBus angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_area!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_area!","text":"set_area!(value::ACBus, val) -> Area\n\n\nSet ACBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_base_voltage!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_base_voltage!","text":"set_base_voltage!(value::ACBus, val) -> Any\n\n\nSet ACBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_bustype!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_bustype!","text":"set_bustype!(value::ACBus, val) -> Any\n\n\nSet ACBus bustype.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_ext!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_ext!","text":"set_ext!(value::ACBus, val) -> Any\n\n\nSet ACBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_load_zone!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_load_zone!","text":"set_load_zone!(value::ACBus, val) -> LoadZone\n\n\nSet ACBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_magnitude!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_magnitude!","text":"set_magnitude!(value::ACBus, val) -> Any\n\n\nSet ACBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_number!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_number!","text":"set_number!(value::ACBus, val) -> Any\n\n\nSet ACBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_voltage_limits!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_voltage_limits!","text":"set_voltage_limits!(value::ACBus, val) -> Any\n\n\nSet ACBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#EnergyReservoirStorage","page":"EnergyReservoirStorage","title":"EnergyReservoirStorage","text":"","category":"section"},{"location":"model_library/generated_EnergyReservoirStorage/","page":"EnergyReservoirStorage","title":"EnergyReservoirStorage","text":"Modules = [PowerSystems]\nPages = [\"generated/EnergyReservoirStorage.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.EnergyReservoirStorage","page":"EnergyReservoirStorage","title":"PowerSystems.EnergyReservoirStorage","text":"mutable struct EnergyReservoirStorage <: Storage\n name::String\n available::Bool\n bus::ACBus\n prime_mover_type::PrimeMovers\n storage_technology_type::StorageTech\n storage_capacity::Float64\n storage_level_limits::MinMax\n initial_storage_capacity_level::Float64\n rating::Float64\n active_power::Float64\n input_active_power_limits::MinMax\n output_active_power_limits::MinMax\n efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}\n reactive_power::Float64\n reactive_power_limits::Union{Nothing, MinMax}\n base_power::Float64\n operation_cost::StorageCost\n conversion_factor::Float64\n storage_target::Float64\n cycle_limits::Int\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAn energy storage device, modeled as a generic energy reservoir.\n\nThis is suitable for modeling storage charging and discharging with average efficiency losses, ignoring the physical dynamics of the storage unit. A variety of energy storage types and chemistries can be modeled with this approach. For pumped hydro storage, alternatively see HydroPumpedStorage\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nstorage_technology_type::StorageTech: Storage Technology Complementary to EIA 923. Options are listed here\nstorage_capacity::Float64: Maximum storage capacity (can be in units of, e.g., MWh for batteries or liters for hydrogen), validation range: (0, nothing)\nstorage_level_limits::MinMax: Minimum and maximum allowable storage levels [0, 1], which can be used to model derates or other restrictions, such as state-of-charge restrictions on battery cycling, validation range: (0, 1)\ninitial_storage_capacity_level::Float64: Initial storage capacity level as a ratio [0, 1.0] of storage_capacity, validation range: (0, 1)\nrating::Float64: Maximum output power rating of the unit (MVA)\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\ninput_active_power_limits::MinMax: Minimum and maximum limits on the input active power (i.e., charging), validation range: (0, nothing)\noutput_active_power_limits::MinMax: Minimum and maximum limits on the output active power (i.e., discharging), validation range: (0, nothing)\nefficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}: Average efficiency [0, 1] in (charging/filling) and out (discharging/consuming) of the storage system, validation range: (0, 1)\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\noperation_cost::StorageCost: (default: StorageCost(nothing)) OperationalCost of storage\nconversion_factor::Float64: (default: 1.0) Conversion factor of storage_capacity to MWh, if different than 1.0. For example, X MWh/liter hydrogen\nstorage_target::Float64: (default: 0.0) Storage target at the end of simulation as ratio of storage capacity\ncycle_limits::Int: (default: 1e4) Storage Maximum number of cycles per year\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_EnergyReservoirStorage/#InfrastructureSystems.get_name-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"InfrastructureSystems.get_name","text":"get_name(value::EnergyReservoirStorage) -> String\n\n\nGet EnergyReservoirStorage name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_active_power-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_active_power","text":"get_active_power(value::EnergyReservoirStorage) -> Any\n\n\nGet EnergyReservoirStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_available-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_available","text":"get_available(value::EnergyReservoirStorage) -> Bool\n\n\nGet EnergyReservoirStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_base_power-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_base_power","text":"get_base_power(value::EnergyReservoirStorage) -> Float64\n\n\nGet EnergyReservoirStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_bus-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_bus","text":"get_bus(value::EnergyReservoirStorage) -> ACBus\n\n\nGet EnergyReservoirStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_conversion_factor-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_conversion_factor","text":"get_conversion_factor(\n value::EnergyReservoirStorage\n) -> Float64\n\n\nGet EnergyReservoirStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_cycle_limits-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_cycle_limits","text":"get_cycle_limits(value::EnergyReservoirStorage) -> Int64\n\n\nGet EnergyReservoirStorage cycle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_dynamic_injector-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::EnergyReservoirStorage\n) -> Union{Nothing, DynamicInjection}\n\n\nGet EnergyReservoirStorage dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_efficiency-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_efficiency","text":"get_efficiency(\n value::EnergyReservoirStorage\n) -> @NamedTuple{in::Float64, out::Float64}\n\n\nGet EnergyReservoirStorage efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_ext-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_ext","text":"get_ext(value::EnergyReservoirStorage) -> Dict{String, Any}\n\n\nGet EnergyReservoirStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_initial_storage_capacity_level-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_initial_storage_capacity_level","text":"get_initial_storage_capacity_level(\n value::EnergyReservoirStorage\n) -> Float64\n\n\nGet EnergyReservoirStorage initial_storage_capacity_level.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_input_active_power_limits-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_input_active_power_limits","text":"get_input_active_power_limits(\n value::EnergyReservoirStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet EnergyReservoirStorage input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_operation_cost-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::EnergyReservoirStorage\n) -> StorageCost\n\n\nGet EnergyReservoirStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_output_active_power_limits-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_output_active_power_limits","text":"get_output_active_power_limits(\n value::EnergyReservoirStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet EnergyReservoirStorage output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_prime_mover_type-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::EnergyReservoirStorage\n) -> PrimeMovers\n\n\nGet EnergyReservoirStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_rating-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_rating","text":"get_rating(value::EnergyReservoirStorage) -> Any\n\n\nGet EnergyReservoirStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_reactive_power-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::EnergyReservoirStorage) -> Any\n\n\nGet EnergyReservoirStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_reactive_power_limits-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::EnergyReservoirStorage\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet EnergyReservoirStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_services-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_services","text":"get_services(\n value::EnergyReservoirStorage\n) -> Vector{Service}\n\n\nGet EnergyReservoirStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_storage_capacity-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_storage_capacity","text":"get_storage_capacity(value::EnergyReservoirStorage) -> Any\n\n\nGet EnergyReservoirStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_storage_level_limits-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_storage_level_limits","text":"get_storage_level_limits(\n value::EnergyReservoirStorage\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EnergyReservoirStorage storage_level_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_storage_target-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_storage_target","text":"get_storage_target(value::EnergyReservoirStorage) -> Float64\n\n\nGet EnergyReservoirStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.get_storage_technology_type-Tuple{EnergyReservoirStorage}","page":"EnergyReservoirStorage","title":"PowerSystems.get_storage_technology_type","text":"get_storage_technology_type(\n value::EnergyReservoirStorage\n) -> StorageTech\n\n\nGet EnergyReservoirStorage storage_technology_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_active_power!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_available!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_available!","text":"set_available!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_base_power!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_bus!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_bus!","text":"set_bus!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_conversion_factor!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_conversion_factor!","text":"set_conversion_factor!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_cycle_limits!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_cycle_limits!","text":"set_cycle_limits!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage cycle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_efficiency!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_ext!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_ext!","text":"set_ext!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_initial_storage_capacity_level!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_initial_storage_capacity_level!","text":"set_initial_storage_capacity_level!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage initial_storage_capacity_level.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_input_active_power_limits!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_input_active_power_limits!","text":"set_input_active_power_limits!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_operation_cost!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_output_active_power_limits!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_output_active_power_limits!","text":"set_output_active_power_limits!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_prime_mover_type!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_rating!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_rating!","text":"set_rating!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_reactive_power!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_reactive_power_limits!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_services!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_services!","text":"set_services!(value::EnergyReservoirStorage, val) -> Any\n\n\nSet EnergyReservoirStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_storage_capacity!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_storage_capacity!","text":"set_storage_capacity!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_storage_level_limits!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_storage_level_limits!","text":"set_storage_level_limits!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage storage_level_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_storage_target!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_EnergyReservoirStorage/#PowerSystems.set_storage_technology_type!-Tuple{EnergyReservoirStorage, Any}","page":"EnergyReservoirStorage","title":"PowerSystems.set_storage_technology_type!","text":"set_storage_technology_type!(\n value::EnergyReservoirStorage,\n val\n) -> Any\n\n\nSet EnergyReservoirStorage storage_technology_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#MonitoredLine","page":"MonitoredLine","title":"MonitoredLine","text":"","category":"section"},{"location":"model_library/generated_MonitoredLine/","page":"MonitoredLine","title":"MonitoredLine","text":"Modules = [PowerSystems]\nPages = [\"generated/MonitoredLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.MonitoredLine","page":"MonitoredLine","title":"PowerSystems.MonitoredLine","text":"mutable struct MonitoredLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n b::FromTo\n flow_limits::FromTo_ToFrom\n rating::Float64\n angle_limits::MinMax\n g::FromTo\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAn AC transmission line with additional power flow constraints specified by the system operator, more restrictive than the line's thermal limits.\n\nFor example, monitored lines can be used to restrict line flow following a contingency elsewhere in the network. See the flow_limits parameter. If monitoring is not needed, see Line\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\nreactive_power_flow::Float64: Initial condition of reactive power flow on the line (MVAR)\narc::Arc: An Arc defining this line from a bus to another bus\nr::Float64: Resistance in pu (SYSTEM_BASE), validation range: (0, 4)\nx::Float64: Reactance in pu (SYSTEM_BASE), validation range: (0, 4)\nb::FromTo: Shunt susceptance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 2)\nflow_limits::FromTo_ToFrom: Minimum and maximum permissable flow on the line (MVA), if different from the thermal rating defined in rating\nrating::Float64: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a line before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to\nangle_limits::MinMax: Minimum and maximum angle limits (radians), validation range: (-1.571, 1.571)\ng::FromTo: (default: (from=0.0, to=0.0)) Shunt conductance in pu (SYSTEM_BASE), specified both on the from and to ends of the line. These are commonly modeled with the same value, validation range: (0, 100)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_MonitoredLine/#InfrastructureSystems.get_name-Tuple{MonitoredLine}","page":"MonitoredLine","title":"InfrastructureSystems.get_name","text":"get_name(value::MonitoredLine) -> String\n\n\nGet MonitoredLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_active_power_flow-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_angle_limits-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::MonitoredLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet MonitoredLine angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_arc-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_arc","text":"get_arc(value::MonitoredLine) -> Arc\n\n\nGet MonitoredLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_available-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_available","text":"get_available(value::MonitoredLine) -> Bool\n\n\nGet MonitoredLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_b-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_b","text":"get_b(\n value::MonitoredLine\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet MonitoredLine b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_ext-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_ext","text":"get_ext(value::MonitoredLine) -> Dict{String, Any}\n\n\nGet MonitoredLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_flow_limits-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_flow_limits","text":"get_flow_limits(\n value::MonitoredLine\n) -> NamedTuple{(:from_to, :to_from), <:Tuple{Any, Any}}\n\n\nGet MonitoredLine flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_g-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_g","text":"get_g(\n value::MonitoredLine\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet MonitoredLine g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_r-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_r","text":"get_r(value::MonitoredLine) -> Float64\n\n\nGet MonitoredLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_rating-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_rating","text":"get_rating(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_reactive_power_flow-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_services-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_services","text":"get_services(value::MonitoredLine) -> Vector{Service}\n\n\nGet MonitoredLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_x-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_x","text":"get_x(value::MonitoredLine) -> Float64\n\n\nGet MonitoredLine x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_active_power_flow!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_angle_limits!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_arc!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_available!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_available!","text":"set_available!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_b!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_b!","text":"set_b!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_ext!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_flow_limits!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_flow_limits!","text":"set_flow_limits!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_g!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_g!","text":"set_g!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_r!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_r!","text":"set_r!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_rating!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_rating!","text":"set_rating!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_reactive_power_flow!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_services!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_services!","text":"set_services!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_x!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_x!","text":"set_x!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_inverter/#DynamicInverter","page":"Dynamic Inverter","title":"DynamicInverter","text":"","category":"section"},{"location":"model_library/dynamic_inverter/","page":"Dynamic Inverter","title":"Dynamic Inverter","text":"Modules = [PowerSystems]\nPages = [\"dynamic_inverter.jl\"]\nOrder = [:type, :function]\nPublic = true","category":"page"},{"location":"model_library/dynamic_inverter/#PowerSystems.DynamicInverter","page":"Dynamic Inverter","title":"PowerSystems.DynamicInverter","text":"mutable struct DynamicInverter{\n C <: Converter,\n O <: OuterControl,\n IC <: InnerControl,\n DC <: DCSource,\n P <: FrequencyEstimator,\n F <: Filter,\n} <: DynamicInjection\n name::String\n ω_ref::Float64\n converter::C\n outer_control::O\n inner_control::IC\n dc_source::DC\n freq_estimator::P\n filter::F\n limiter::Union{nothing, OutputCurrentLimiter}\n base_power::Float64\n n_states::Int\n states::Vector{Symbol}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA dynamic inverter with the necessary data for modeling the dynamic response of an inverter in a phasor or electromagnetic transient simulation.\n\nA dynamic inverter is composed by 6 components, namely a Converter, Outer Loop Control, Inner Loop Control, a DC Source, a Frequency Estimator and a Filter.\n\nIt must be attached to a StaticInjection device using add_component!, which contains all the rest of the generator's data that isn't specific to its dynamic response.\n\nArguments\n\nname::String: Name of inverter.\nω_ref::Float64: Frequency reference set-point in pu.\nconverter <: Converter: Converter model for the PWM transformation.\nouter_control <: OuterControl: An OuterControl controller model.\ninner_control <: InnerControl: An InnerControl controller model.\ndc_source <: DCSource: DCSource model.\nfreq_estimator <: FrequencyEstimator: a FrequencyEstimator (typically a PLL) model.\nfilter <: Filter: Filter model.\nlimiter <: Union{nothing, OutputCurrentLimiter}: (default: nothing) Inner Control Current Limiter model\nbase_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization. Although this has a default, in almost all cases base_power should be updated to equal the base_power field of the StaticInjection device that this dynamic generator will be attached to.\nn_states::Int: (Do not modify.) Number of states (will depend on the inputs above).\nstates::Vector{Symbol}: (Do not modify.) Vector of states (will depend on the inputs above).\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AGC/#AGC","page":"AGC","title":"AGC","text":"","category":"section"},{"location":"model_library/generated_AGC/","page":"AGC","title":"AGC","text":"Modules = [PowerSystems]\nPages = [\"generated/AGC.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AGC/#PowerSystems.AGC","page":"AGC","title":"PowerSystems.AGC","text":"mutable struct AGC <: Service\n name::String\n available::Bool\n bias::Float64\n K_p::Float64\n K_i::Float64\n K_d::Float64\n delta_t::Float64\n area::Union{Nothing, Area}\n initial_ace::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAutomatic generation control (AGC) for the system or a certain Area within the system.\n\nThis model uses a proportional–integral–derivative (PID) control to simulate a \"smooth\" response of the AGC to the area control error (ACE). Refer to \"AGC Simulation Model for Large Renewable Energy Penetration Studies.\"\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbias::Float64: Area frequency bias in MW/Hz\nK_p::Float64: PID Proportional Constant\nK_i::Float64: PID Integral Constant\nK_d::Float64: PID Derivative Constant\ndelta_t::Float64: PID Discretization period [Seconds]\narea::Union{Nothing, Area}: (default: nothing) the area controlled by the AGC\ninitial_ace::Float64: (default: 0.0) Initial condition for ACE\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AGC/#InfrastructureSystems.get_name-Tuple{AGC}","page":"AGC","title":"InfrastructureSystems.get_name","text":"get_name(value::AGC) -> String\n\n\nGet AGC name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_d-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_d","text":"get_K_d(value::AGC) -> Float64\n\n\nGet AGC K_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_i-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_i","text":"get_K_i(value::AGC) -> Float64\n\n\nGet AGC K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_p-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_p","text":"get_K_p(value::AGC) -> Float64\n\n\nGet AGC K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_area-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_area","text":"get_area(value::AGC) -> Union{Nothing, Area}\n\n\nGet AGC area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_available-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_available","text":"get_available(value::AGC) -> Bool\n\n\nGet AGC available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_bias-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_bias","text":"get_bias(value::AGC) -> Float64\n\n\nGet AGC bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_delta_t-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_delta_t","text":"get_delta_t(value::AGC) -> Float64\n\n\nGet AGC delta_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_ext-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_ext","text":"get_ext(value::AGC) -> Dict{String, Any}\n\n\nGet AGC ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_initial_ace-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_initial_ace","text":"get_initial_ace(value::AGC) -> Float64\n\n\nGet AGC initial_ace.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_d!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_d!","text":"set_K_d!(value::AGC, val) -> Any\n\n\nSet AGC K_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_i!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_i!","text":"set_K_i!(value::AGC, val) -> Any\n\n\nSet AGC K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_p!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::AGC, val) -> Any\n\n\nSet AGC K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_area!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_area!","text":"set_area!(value::AGC, val) -> Any\n\n\nSet AGC area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_available!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_available!","text":"set_available!(value::AGC, val) -> Any\n\n\nSet AGC available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_bias!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_bias!","text":"set_bias!(value::AGC, val) -> Any\n\n\nSet AGC bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_delta_t!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_delta_t!","text":"set_delta_t!(value::AGC, val) -> Any\n\n\nSet AGC delta_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_ext!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_ext!","text":"set_ext!(value::AGC, val) -> Any\n\n\nSet AGC ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_initial_ace!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_initial_ace!","text":"set_initial_ace!(value::AGC, val) -> Any\n\n\nSet AGC initial_ace.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#Transformer2W","page":"Transformer2W","title":"Transformer2W","text":"","category":"section"},{"location":"model_library/generated_Transformer2W/","page":"Transformer2W","title":"Transformer2W","text":"Modules = [PowerSystems]\nPages = [\"generated/Transformer2W.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Transformer2W/#PowerSystems.Transformer2W","page":"Transformer2W","title":"PowerSystems.Transformer2W","text":"mutable struct Transformer2W <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n rating::Union{Nothing, Float64}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA basic 2-winding transformer.\n\nThe model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow through the transformer (MW)\nreactive_power_flow::Float64: Initial condition of reactive power flow through the transformer (MVAR)\narc::Arc: An Arc defining this transformer from a bus to another bus\nr::Float64: Resistance in pu (SYSTEM_BASE), validation range: (-2, 4)\nx::Float64: Reactance in pu (SYSTEM_BASE), validation range: (-2, 4)\nprimary_shunt::Float64: Shunt reactance in pu (SYSTEM_BASE), validation range: (0, 2)\nrating::Union{Nothing, Float64}: Thermal rating (MVA). Flow through the transformer must be between -rating and rating. When defining a transformer before it is attached to a System, rating must be in pu (SYSTEM_BASE) using the base power of the System it will be attached to, validation range: (0, nothing)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Transformer2W/#InfrastructureSystems.get_name-Tuple{Transformer2W}","page":"Transformer2W","title":"InfrastructureSystems.get_name","text":"get_name(value::Transformer2W) -> String\n\n\nGet Transformer2W name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_active_power_flow-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::Transformer2W) -> Any\n\n\nGet Transformer2W active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_arc-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_arc","text":"get_arc(value::Transformer2W) -> Arc\n\n\nGet Transformer2W arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_available-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_available","text":"get_available(value::Transformer2W) -> Bool\n\n\nGet Transformer2W available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_ext-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_ext","text":"get_ext(value::Transformer2W) -> Dict{String, Any}\n\n\nGet Transformer2W ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_primary_shunt-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(value::Transformer2W) -> Float64\n\n\nGet Transformer2W primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_r-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_r","text":"get_r(value::Transformer2W) -> Float64\n\n\nGet Transformer2W r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_rating-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_rating","text":"get_rating(value::Transformer2W) -> Any\n\n\nGet Transformer2W rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_reactive_power_flow-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::Transformer2W) -> Any\n\n\nGet Transformer2W reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_services-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_services","text":"get_services(value::Transformer2W) -> Vector{Service}\n\n\nGet Transformer2W services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_x-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_x","text":"get_x(value::Transformer2W) -> Float64\n\n\nGet Transformer2W x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_active_power_flow!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_arc!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_arc!","text":"set_arc!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_available!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_available!","text":"set_available!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_ext!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_ext!","text":"set_ext!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_primary_shunt!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_r!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_r!","text":"set_r!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_rating!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_rating!","text":"set_rating!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_reactive_power_flow!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_services!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_services!","text":"set_services!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_x!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_x!","text":"set_x!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#HydroEnergyReservoir","page":"HydroEnergyReservoir","title":"HydroEnergyReservoir","text":"","category":"section"},{"location":"model_library/generated_HydroEnergyReservoir/","page":"HydroEnergyReservoir","title":"HydroEnergyReservoir","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroEnergyReservoir.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.HydroEnergyReservoir","page":"HydroEnergyReservoir","title":"PowerSystems.HydroEnergyReservoir","text":"mutable struct HydroEnergyReservoir <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n base_power::Float64\n storage_capacity::Float64\n inflow::Float64\n initial_storage::Float64\n operation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}\n storage_target::Float64\n conversion_factor::Float64\n status::Bool\n time_at_status::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA hydropower generator with an upper reservoir, offering some energy storage and operational flexibility.\n\nFor hydro generators with pumped storage, see HydroPumpedStorage\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW/min, validation range: (0, nothing)\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\nstorage_capacity::Float64: Maximum storage capacity in the reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)\ninflow::Float64: Baseline inflow into the reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing)\ninitial_storage::Float64: Initial storage capacity in the reservoir (units can be p.u-hr or m^3), validation range: (0, nothing)\noperation_cost::Union{HydroGenerationCost, StorageCost, MarketBidCost}: (default: HydroGenerationCost(nothing)) OperationalCost of generation\nstorage_target::Float64: (default: 1.0) Storage target at the end of simulation as a fraction of storage capacity\nconversion_factor::Float64: (default: 1.0) Conversion factor from flow/volume to energy: m^3 -> p.u-hr\nstatus::Bool: (default: false) Initial commitment condition at the start of a simulation (true = on or false = off)\ntime_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroEnergyReservoir/#InfrastructureSystems.get_name-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroEnergyReservoir) -> String\n\n\nGet HydroEnergyReservoir name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_active_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_active_power_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroEnergyReservoir\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroEnergyReservoir active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_available-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_available","text":"get_available(value::HydroEnergyReservoir) -> Bool\n\n\nGet HydroEnergyReservoir available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_base_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_bus-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_bus","text":"get_bus(value::HydroEnergyReservoir) -> ACBus\n\n\nGet HydroEnergyReservoir bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_conversion_factor-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_conversion_factor","text":"get_conversion_factor(\n value::HydroEnergyReservoir\n) -> Float64\n\n\nGet HydroEnergyReservoir conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_dynamic_injector-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroEnergyReservoir\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroEnergyReservoir dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_ext-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_ext","text":"get_ext(value::HydroEnergyReservoir) -> Dict{String, Any}\n\n\nGet HydroEnergyReservoir ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_inflow-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_inflow","text":"get_inflow(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_initial_storage-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_initial_storage","text":"get_initial_storage(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_operation_cost-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroEnergyReservoir\n) -> Union{HydroGenerationCost, MarketBidCost, StorageCost}\n\n\nGet HydroEnergyReservoir operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_prime_mover_type-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::HydroEnergyReservoir\n) -> PrimeMovers\n\n\nGet HydroEnergyReservoir prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_ramp_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroEnergyReservoir ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_rating-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_rating","text":"get_rating(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_reactive_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_reactive_power_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroEnergyReservoir reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_services-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_services","text":"get_services(value::HydroEnergyReservoir) -> Vector{Service}\n\n\nGet HydroEnergyReservoir services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_status-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_status","text":"get_status(value::HydroEnergyReservoir) -> Bool\n\n\nGet HydroEnergyReservoir status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_storage_capacity-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_storage_capacity","text":"get_storage_capacity(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_storage_target-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_storage_target","text":"get_storage_target(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_time_at_status-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_time_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroEnergyReservoir time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_active_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_active_power_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_available!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_available!","text":"set_available!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_base_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_bus!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_conversion_factor!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_conversion_factor!","text":"set_conversion_factor!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_ext!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_inflow!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_inflow!","text":"set_inflow!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_initial_storage!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_initial_storage!","text":"set_initial_storage!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_operation_cost!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_prime_mover_type!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_ramp_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_rating!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_reactive_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_reactive_power_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_services!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_services!","text":"set_services!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_status!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_status!","text":"set_status!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_storage_capacity!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_storage_capacity!","text":"set_storage_capacity!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_storage_target!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_time_at_status!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_time_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_generator/#DynamicGenerator","page":"Dynamic Generator","title":"DynamicGenerator","text":"","category":"section"},{"location":"model_library/dynamic_generator/","page":"Dynamic Generator","title":"Dynamic Generator","text":"Modules = [PowerSystems]\nPages = [\"dynamic_generator.jl\"]\nOrder = [:type, :function]\nPublic = true","category":"page"},{"location":"model_library/dynamic_generator/#PowerSystems.DynamicGenerator","page":"Dynamic Generator","title":"PowerSystems.DynamicGenerator","text":"mutable struct DynamicGenerator{\n M <: Machine,\n S <: Shaft,\n A <: AVR,\n TG <: TurbineGov,\n P <: PSS,\n} <: DynamicInjection\n name::String\n ω_ref::Float64\n machine::M\n shaft::S\n avr::A\n prime_mover::TG\n pss::P\n base_power::Float64\n n_states::Int\n states::Vector{Symbol}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA dynamic generator with the necessary data for modeling the dynamic response of a generator in a phasor or electromagnetic transient simulation.\n\nDynamic generator is composed by 5 components, namely a Machine, a Shaft, an Automatic Voltage Regulator (AVR), a Prime Mover and Turbine Governor, and Power System Stabilizer (PSS). It must be attached to a StaticInjection device using add_component!, which contains all the rest of the generator's data that isn't specific to its dynamic response.\n\nArguments\n\nname::String: Name of generator.\nω_ref::Float64: Frequency reference set-point in pu.\nmachine <: Machine: Machine model for modeling the electro-magnetic phenomena.\nshaft <: Shaft: Shaft model for modeling the electro-mechanical phenomena.\navr <: AVR: AVR model of the excitacion system.\nprime_mover <: TurbineGov: Prime Mover and Turbine Governor model for mechanical power.\npss <: PSS: PSS model.\nbase_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization. Although this has a default, in almost all cases base_power should be updated to equal the base_power field of the StaticInjection device that this dynamic generator will be attached to.\nn_states::Int: (Do not modify.) Number of states (will depend on the inputs above).\nstates::Vector{Symbol}: (Do not modify.) Vector of states (will depend on the inputs above).\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableDispatch/#RenewableDispatch","page":"RenewableDispatch","title":"RenewableDispatch","text":"","category":"section"},{"location":"model_library/generated_RenewableDispatch/","page":"RenewableDispatch","title":"RenewableDispatch","text":"Modules = [PowerSystems]\nPages = [\"generated/RenewableDispatch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.RenewableDispatch","page":"RenewableDispatch","title":"PowerSystems.RenewableDispatch","text":"mutable struct RenewableDispatch <: RenewableGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n reactive_power_limits::Union{Nothing, MinMax}\n power_factor::Float64\n operation_cost::Union{RenewableGenerationCost, MarketBidCost}\n base_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA renewable (e.g., wind or solar) generator whose output can be curtailed to satisfy power system constraints.\n\nThese generators can also participate in reserves markets, including upwards reserves by proactively curtailing some available power (based on its max_active_power time series). Example uses include: a utility-scale wind or solar generator whose PPA allows curtailment. For non-curtailable or must-take renewables, see RenewableNonDispatch.\n\nRenewable generators do not have a max_active_power parameter, which is instead calculated when calling get_max_active_power()\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), used in some production cost modeling simulations. To set the reactive power in a load flow, use power_factor\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits, used in some production cost model simulations and in power flow if the unit is connected to a PV bus. Set to nothing if not applicable\npower_factor::Float64: Power factor [0, 1] set-point, used in some production cost modeling and in load flow if the unit is connected to a PQ bus, validation range: (0, 1)\noperation_cost::Union{RenewableGenerationCost, MarketBidCost}: OperationalCost of generation\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableDispatch/#InfrastructureSystems.get_name-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"InfrastructureSystems.get_name","text":"get_name(value::RenewableDispatch) -> String\n\n\nGet RenewableDispatch name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_active_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_active_power","text":"get_active_power(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_available-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_available","text":"get_available(value::RenewableDispatch) -> Bool\n\n\nGet RenewableDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_base_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_base_power","text":"get_base_power(value::RenewableDispatch) -> Float64\n\n\nGet RenewableDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_bus-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_bus","text":"get_bus(value::RenewableDispatch) -> ACBus\n\n\nGet RenewableDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_dynamic_injector-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::RenewableDispatch\n) -> Union{Nothing, DynamicInjection}\n\n\nGet RenewableDispatch dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_ext-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_ext","text":"get_ext(value::RenewableDispatch) -> Dict{String, Any}\n\n\nGet RenewableDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_operation_cost-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::RenewableDispatch\n) -> Union{MarketBidCost, RenewableGenerationCost}\n\n\nGet RenewableDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_power_factor-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_power_factor","text":"get_power_factor(value::RenewableDispatch) -> Float64\n\n\nGet RenewableDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_prime_mover_type-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::RenewableDispatch\n) -> PrimeMovers\n\n\nGet RenewableDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_rating-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_rating","text":"get_rating(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_reactive_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_reactive_power_limits-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::RenewableDispatch\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet RenewableDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_services-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_services","text":"get_services(value::RenewableDispatch) -> Vector{Service}\n\n\nGet RenewableDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_active_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_available!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_available!","text":"set_available!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_base_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_bus!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_bus!","text":"set_bus!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_ext!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_operation_cost!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_power_factor!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_power_factor!","text":"set_power_factor!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_prime_mover_type!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_rating!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_rating!","text":"set_rating!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_reactive_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_reactive_power_limits!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::RenewableDispatch,\n val\n) -> Any\n\n\nSet RenewableDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_services!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_services!","text":"set_services!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#TwoTerminalVSCDCLine","page":"TwoTerminalVSCDCLine","title":"TwoTerminalVSCDCLine","text":"","category":"section"},{"location":"model_library/generated_TwoTerminalVSCDCLine/","page":"TwoTerminalVSCDCLine","title":"TwoTerminalVSCDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TwoTerminalVSCDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.TwoTerminalVSCDCLine","page":"TwoTerminalVSCDCLine","title":"PowerSystems.TwoTerminalVSCDCLine","text":"mutable struct TwoTerminalVSCDCLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n rectifier_tap_limits::MinMax\n rectifier_xrc::Float64\n rectifier_firing_angle::MinMax\n inverter_tap_limits::MinMax\n inverter_xrc::Float64\n inverter_extinction_angle::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA Voltage Sourced Converter (VSC)-HVDC transmission line.\n\nAs implemented in \"Power System Modelling and Scripting\" by Federico Milano, Chapter 18, Page 397. This model is suitable for dynamic simulations\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\narc::Arc: An Arc defining this line from a bus to another bus\nrectifier_tap_limits::MinMax: Minimum and maximum rectifier tap limits as a ratio between the primary and secondary side voltages\nrectifier_xrc::Float64: Rectifier commutation reactance in p.u. (DEVICE_BASE)\nrectifier_firing_angle::MinMax: Minimum and maximum rectifier firing angle (α) (radians)\ninverter_tap_limits::MinMax: Minimum and maximum inverter tap limits as a ratio between the primary and secondary side voltages\ninverter_xrc::Float64: Inverter commutation reactance in p.u. (DEVICE_BASE)\ninverter_extinction_angle::MinMax: Minimum and maximum inverter extinction angle (γ) (radians)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#InfrastructureSystems.get_name-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TwoTerminalVSCDCLine) -> String\n\n\nGet TwoTerminalVSCDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_active_power_flow-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TwoTerminalVSCDCLine) -> Any\n\n\nGet TwoTerminalVSCDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_arc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TwoTerminalVSCDCLine) -> Arc\n\n\nGet TwoTerminalVSCDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_available-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_available","text":"get_available(value::TwoTerminalVSCDCLine) -> Bool\n\n\nGet TwoTerminalVSCDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_ext-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TwoTerminalVSCDCLine) -> Dict{String, Any}\n\n\nGet TwoTerminalVSCDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_extinction_angle-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_extinction_angle","text":"get_inverter_extinction_angle(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine inverter_extinction_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_tap_limits-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_tap_limits","text":"get_inverter_tap_limits(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine inverter_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_xrc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_xrc","text":"get_inverter_xrc(value::TwoTerminalVSCDCLine) -> Float64\n\n\nGet TwoTerminalVSCDCLine inverter_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_firing_angle-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_firing_angle","text":"get_rectifier_firing_angle(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine rectifier_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_tap_limits-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_tap_limits","text":"get_rectifier_tap_limits(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine rectifier_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_xrc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_xrc","text":"get_rectifier_xrc(value::TwoTerminalVSCDCLine) -> Float64\n\n\nGet TwoTerminalVSCDCLine rectifier_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_services-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_services","text":"get_services(value::TwoTerminalVSCDCLine) -> Vector{Service}\n\n\nGet TwoTerminalVSCDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_active_power_flow!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_arc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_available!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_ext!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_extinction_angle!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_extinction_angle!","text":"set_inverter_extinction_angle!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_extinction_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_tap_limits!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_tap_limits!","text":"set_inverter_tap_limits!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_xrc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_xrc!","text":"set_inverter_xrc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_firing_angle!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_firing_angle!","text":"set_rectifier_firing_angle!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_tap_limits!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_tap_limits!","text":"set_rectifier_tap_limits!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_xrc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_xrc!","text":"set_rectifier_xrc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_services!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#Source","page":"Source","title":"Source","text":"","category":"section"},{"location":"model_library/generated_Source/","page":"Source","title":"Source","text":"Modules = [PowerSystems]\nPages = [\"generated/Source.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Source/#PowerSystems.Source","page":"Source","title":"PowerSystems.Source","text":"mutable struct Source <: StaticInjection\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n R_th::Float64\n X_th::Float64\n internal_voltage::Float64\n internal_angle::Float64\n base_power::Float64\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nAn infinite bus with a constant voltage output.\n\nCommonly used in dynamics simulations to represent a very large machine on a single bus\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR)\nR_th::Float64: Source Thevenin resistance, validation range: (0, nothing)\nX_th::Float64: Source Thevenin reactance, validation range: (0, nothing)\ninternal_voltage::Float64: (default: 1.0) Internal Voltage (pu), validation range: (0, nothing)\ninternal_angle::Float64: (default: 0.0) Internal Angle\nbase_power::Float64: (default: 100.0) Base Power in MVA\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Source/#InfrastructureSystems.get_name-Tuple{Source}","page":"Source","title":"InfrastructureSystems.get_name","text":"get_name(value::Source) -> String\n\n\nGet Source name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_R_th-Tuple{Source}","page":"Source","title":"PowerSystems.get_R_th","text":"get_R_th(value::Source) -> Float64\n\n\nGet Source R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_X_th-Tuple{Source}","page":"Source","title":"PowerSystems.get_X_th","text":"get_X_th(value::Source) -> Float64\n\n\nGet Source X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_active_power-Tuple{Source}","page":"Source","title":"PowerSystems.get_active_power","text":"get_active_power(value::Source) -> Float64\n\n\nGet Source active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_available-Tuple{Source}","page":"Source","title":"PowerSystems.get_available","text":"get_available(value::Source) -> Bool\n\n\nGet Source available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_base_power-Tuple{Source}","page":"Source","title":"PowerSystems.get_base_power","text":"get_base_power(value::Source) -> Float64\n\n\nGet Source base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_bus-Tuple{Source}","page":"Source","title":"PowerSystems.get_bus","text":"get_bus(value::Source) -> ACBus\n\n\nGet Source bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_dynamic_injector-Tuple{Source}","page":"Source","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::Source\n) -> Union{Nothing, DynamicInjection}\n\n\nGet Source dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_ext-Tuple{Source}","page":"Source","title":"PowerSystems.get_ext","text":"get_ext(value::Source) -> Dict{String, Any}\n\n\nGet Source ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_internal_angle-Tuple{Source}","page":"Source","title":"PowerSystems.get_internal_angle","text":"get_internal_angle(value::Source) -> Float64\n\n\nGet Source internal_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_internal_voltage-Tuple{Source}","page":"Source","title":"PowerSystems.get_internal_voltage","text":"get_internal_voltage(value::Source) -> Float64\n\n\nGet Source internal_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_reactive_power-Tuple{Source}","page":"Source","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::Source) -> Float64\n\n\nGet Source reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_services-Tuple{Source}","page":"Source","title":"PowerSystems.get_services","text":"get_services(value::Source) -> Vector{Service}\n\n\nGet Source services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_R_th!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_R_th!","text":"set_R_th!(value::Source, val) -> Any\n\n\nSet Source R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_X_th!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_X_th!","text":"set_X_th!(value::Source, val) -> Any\n\n\nSet Source X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_active_power!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::Source, val) -> Any\n\n\nSet Source active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_available!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_available!","text":"set_available!(value::Source, val) -> Any\n\n\nSet Source available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_base_power!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::Source, val) -> Any\n\n\nSet Source base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_bus!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_bus!","text":"set_bus!(value::Source, val) -> Any\n\n\nSet Source bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_ext!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_ext!","text":"set_ext!(value::Source, val) -> Any\n\n\nSet Source ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_internal_angle!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_internal_angle!","text":"set_internal_angle!(value::Source, val) -> Any\n\n\nSet Source internal_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_internal_voltage!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_internal_voltage!","text":"set_internal_voltage!(value::Source, val) -> Any\n\n\nSet Source internal_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_reactive_power!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::Source, val) -> Any\n\n\nSet Source reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_services!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_services!","text":"set_services!(value::Source, val) -> Any\n\n\nSet Source services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#FixedAdmittance","page":"FixedAdmittance","title":"FixedAdmittance","text":"","category":"section"},{"location":"model_library/generated_FixedAdmittance/","page":"FixedAdmittance","title":"FixedAdmittance","text":"Modules = [PowerSystems]\nPages = [\"generated/FixedAdmittance.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.FixedAdmittance","page":"FixedAdmittance","title":"PowerSystems.FixedAdmittance","text":"mutable struct FixedAdmittance <: ElectricLoad\n name::String\n available::Bool\n bus::ACBus\n Y::Complex{Float64}\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA fixed admittance.\n\nMost often used in dynamics or AC power flow studies as a source of reactive power\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nY::Complex{Float64}: Fixed admittance in p.u. (SYSTEM_BASE)\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection model for admittance\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FixedAdmittance/#InfrastructureSystems.get_name-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"InfrastructureSystems.get_name","text":"get_name(value::FixedAdmittance) -> String\n\n\nGet FixedAdmittance name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_Y-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_Y","text":"get_Y(value::FixedAdmittance) -> ComplexF64\n\n\nGet FixedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_available-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_available","text":"get_available(value::FixedAdmittance) -> Bool\n\n\nGet FixedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_bus-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_bus","text":"get_bus(value::FixedAdmittance) -> ACBus\n\n\nGet FixedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_dynamic_injector-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::FixedAdmittance\n) -> Union{Nothing, DynamicInjection}\n\n\nGet FixedAdmittance dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_ext-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_ext","text":"get_ext(value::FixedAdmittance) -> Dict{String, Any}\n\n\nGet FixedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_services-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_services","text":"get_services(value::FixedAdmittance) -> Vector{Service}\n\n\nGet FixedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_Y!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_Y!","text":"set_Y!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_available!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_available!","text":"set_available!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_bus!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_bus!","text":"set_bus!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_ext!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_services!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_services!","text":"set_services!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#InterconnectingConverter","page":"InterconnectingConverter","title":"InterconnectingConverter","text":"","category":"section"},{"location":"model_library/generated_InterconnectingConverter/","page":"InterconnectingConverter","title":"InterconnectingConverter","text":"Modules = [PowerSystems]\nPages = [\"generated/InterconnectingConverter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.InterconnectingConverter","page":"InterconnectingConverter","title":"PowerSystems.InterconnectingConverter","text":"mutable struct InterconnectingConverter <: StaticInjection\n name::String\n available::Bool\n bus::ACBus\n dc_bus::DCBus\n active_power::Float64\n rating::Float64\n active_power_limits::MinMax\n base_power::Float64\n dc_current::Float64\n max_dc_current::Float64\n loss_function::Union{LinearCurve, QuadraticCurve}\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nInterconnecting Power Converter (IPC) for transforming power from an ACBus to a DCBus\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus on the AC side of this converter\ndc_bus::DCBus: Bus on the DC side of this converter\nactive_power::Float64: Active power (MW) on the DC side, validation range: active_power_limits\nrating::Float64: Maximum output power rating of the converter (MVA), validation range: (0, nothing)\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW)\nbase_power::Float64: Base power of the converter in MVA, validation range: (0, nothing)\ndc_current::Float64: (default: 0.0) DC current (A) on the converter\nmax_dc_current::Float64: (default: 1e8) Maximum stable dc current limits (A)\nloss_function::Union{LinearCurve, QuadraticCurve}: (default: LinearCurve(0.0)) Linear or quadratic loss function with respect to the converter current\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InterconnectingConverter/#InfrastructureSystems.get_name-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"InfrastructureSystems.get_name","text":"get_name(value::InterconnectingConverter) -> String\n\n\nGet InterconnectingConverter name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_active_power-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_active_power","text":"get_active_power(value::InterconnectingConverter) -> Any\n\n\nGet InterconnectingConverter active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_active_power_limits-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::InterconnectingConverter\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet InterconnectingConverter active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_available-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_available","text":"get_available(value::InterconnectingConverter) -> Bool\n\n\nGet InterconnectingConverter available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_base_power-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_base_power","text":"get_base_power(value::InterconnectingConverter) -> Float64\n\n\nGet InterconnectingConverter base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_bus-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_bus","text":"get_bus(value::InterconnectingConverter) -> ACBus\n\n\nGet InterconnectingConverter bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_dc_bus-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_dc_bus","text":"get_dc_bus(value::InterconnectingConverter) -> DCBus\n\n\nGet InterconnectingConverter dc_bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_dc_current-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_dc_current","text":"get_dc_current(value::InterconnectingConverter) -> Float64\n\n\nGet InterconnectingConverter dc_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_dynamic_injector-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::InterconnectingConverter\n) -> Union{Nothing, DynamicInjection}\n\n\nGet InterconnectingConverter dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_ext-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_ext","text":"get_ext(\n value::InterconnectingConverter\n) -> Dict{String, Any}\n\n\nGet InterconnectingConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_loss_function-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_loss_function","text":"get_loss_function(\n value::InterconnectingConverter\n) -> Union{LinearCurve, QuadraticCurve}\n\n\nGet InterconnectingConverter loss_function.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_max_dc_current-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_max_dc_current","text":"get_max_dc_current(\n value::InterconnectingConverter\n) -> Float64\n\n\nGet InterconnectingConverter max_dc_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_rating-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_rating","text":"get_rating(value::InterconnectingConverter) -> Any\n\n\nGet InterconnectingConverter rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_services-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_services","text":"get_services(\n value::InterconnectingConverter\n) -> Vector{Service}\n\n\nGet InterconnectingConverter services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_active_power!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_active_power!","text":"set_active_power!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_active_power_limits!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_available!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_available!","text":"set_available!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_base_power!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_bus!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_bus!","text":"set_bus!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_dc_bus!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_dc_bus!","text":"set_dc_bus!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter dc_bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_dc_current!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_dc_current!","text":"set_dc_current!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter dc_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_ext!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_ext!","text":"set_ext!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_loss_function!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_loss_function!","text":"set_loss_function!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter loss_function.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_max_dc_current!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_max_dc_current!","text":"set_max_dc_current!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter max_dc_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_rating!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_rating!","text":"set_rating!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_services!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_services!","text":"set_services!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#TModelHVDCLine","page":"TModelHVDCLine","title":"TModelHVDCLine","text":"","category":"section"},{"location":"model_library/generated_TModelHVDCLine/","page":"TModelHVDCLine","title":"TModelHVDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TModelHVDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.TModelHVDCLine","page":"TModelHVDCLine","title":"PowerSystems.TModelHVDCLine","text":"mutable struct TModelHVDCLine <: DCBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n r::Float64\n l::Float64\n c::Float64\n active_power_limits_from::MinMax\n active_power_limits_to::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA High Voltage DC transmission line for modeling DC transmission networks.\n\nThis line must be connected to a DCBus on each end. It uses a T-Model of the line impedance. This is suitable for operational simulations with a multi-terminal DC network\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow::Float64: Initial condition of active power flow on the line (MW)\narc::Arc: An Arc defining this line from a bus to another bus\nr::Float64: Total series Resistance in p.u. (SYSTEM_BASE), split equally on both sides of the shunt capacitance\nl::Float64: Total series Inductance in p.u. (SYSTEM_BASE), split equally on both sides of the shunt capacitance\nc::Float64: Shunt capacitance in p.u. (SYSTEM_BASE)\nactive_power_limits_from::MinMax: Minimum and maximum active power flows to the FROM node (MW)\nactive_power_limits_to::MinMax: Minimum and maximum active power flows to the TO node (MW)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TModelHVDCLine/#InfrastructureSystems.get_name-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TModelHVDCLine) -> String\n\n\nGet TModelHVDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_flow-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TModelHVDCLine) -> Any\n\n\nGet TModelHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_limits_from-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_limits_from","text":"get_active_power_limits_from(\n value::TModelHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TModelHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_limits_to-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_limits_to","text":"get_active_power_limits_to(\n value::TModelHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TModelHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_arc-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TModelHVDCLine) -> Arc\n\n\nGet TModelHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_available-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_available","text":"get_available(value::TModelHVDCLine) -> Bool\n\n\nGet TModelHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_c-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_c","text":"get_c(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_ext-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TModelHVDCLine) -> Dict{String, Any}\n\n\nGet TModelHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_l-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_l","text":"get_l(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_r-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_r","text":"get_r(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_services-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_services","text":"get_services(value::TModelHVDCLine) -> Vector{Service}\n\n\nGet TModelHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_flow!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_limits_from!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_limits_from!","text":"set_active_power_limits_from!(\n value::TModelHVDCLine,\n val\n) -> Any\n\n\nSet TModelHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_limits_to!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_limits_to!","text":"set_active_power_limits_to!(\n value::TModelHVDCLine,\n val\n) -> Any\n\n\nSet TModelHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_arc!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_available!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_c!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_c!","text":"set_c!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_ext!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_l!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_l!","text":"set_l!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_r!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_r!","text":"set_r!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_services!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#GenericDER","page":"GenericDER","title":"GenericDER","text":"","category":"section"},{"location":"model_library/generated_GenericDER/","page":"GenericDER","title":"GenericDER","text":"Modules = [PowerSystems]\nPages = [\"generated/GenericDER.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_GenericDER/#PowerSystems.GenericDER","page":"GenericDER","title":"PowerSystems.GenericDER","text":"mutable struct GenericDER <: DynamicInjection\n name::String\n Qref_Flag::Int\n PQ_Flag::Int\n Gen_Flag::Int\n PerOp_Flag::Int\n Recon_Flag::Int\n Trv::Float64\n VV_pnts::NamedTuple{(:V1, :V2, :V3, :V4), Tuple{Float64, Float64, Float64, Float64}}\n Q_lim::MinMax\n Tp::Float64\n e_lim::MinMax\n Kpq::Float64\n Kiq::Float64\n Iqr_lim::MinMax\n I_max::Float64\n Tg::Float64\n kWh_Cap::Float64\n SOC_ini::Float64\n SOC_lim::MinMax\n Trf::Float64\n fdbd_pnts::NamedTuple{(:fdbd1, :fdbd2), Tuple{Float64, Float64}}\n D_dn::Float64\n D_up::Float64\n fe_lim::MinMax\n Kpp::Float64\n Kip::Float64\n P_lim::MinMax\n dP_lim::MinMax\n T_pord::Float64\n rrpwr::Float64\n VRT_pnts::NamedTuple{(:vrt1, :vrt2, :vrt3, :vrt4, :vrt5), Tuple{Float64, Float64, Float64, Float64, Float64}}\n TVRT_pnts::NamedTuple{(:tvrt1, :tvrt2, :tvrt3), Tuple{Float64, Float64, Float64}}\n tV_delay::Float64\n VES_lim::MinMax\n FRT_pnts::NamedTuple{(:frt1, :frt2, :frt3, :frt4), Tuple{Float64, Float64, Float64, Float64}}\n TFRT_pnts::NamedTuple{(:tfrt1, :tfrt2), Tuple{Float64, Float64}}\n tF_delay::Float64\n FES_lim::MinMax\n Pfa_ref::Float64\n Q_ref::Float64\n P_ref::Float64\n base_power::Float64\n states::Vector{Symbol}\n n_states::Int\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Generic Distributed Energy Resource Model. Based on \"Modeling Framework and Coordination of DER and Flexible Loads for Ancillary Service Provision.\"\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nQref_Flag::Int: Reactive Power Control Mode. 1 VoltVar Control, 2 Constant Q Control, 3 Constant PF Control, validation range: (1, 3)\nPQ_Flag::Int: Active and reactive power priority mode. 0 for Q priority, 1 for P priority, validation range: (0, 1)\nGen_Flag::Int: Define generator or storage system. 0 unit is a storage device, 1 unit is a generator, validation range: (0, 1)\nPerOp_Flag::Int: Defines operation of permisible region in VRT characteristic. 0 for cease, 1 for continuous operation, validation range: (0, 1)\nRecon_Flag::Int: Defines if DER can reconnect after voltage ride-through disconnection, validation range: (0, 1)\nTrv::Float64: Voltage measurement transducer's time constant, in s, validation range: (0, nothing)\nVV_pnts::NamedTuple{(:V1, :V2, :V3, :V4), Tuple{Float64, Float64, Float64, Float64}}: Y-axis Volt-var curve points (V1,V2,V3,V4)\nQ_lim::MinMax: Reactive power limits in pu (Qmin, Qmax)\nTp::Float64: Power measurement transducer's time constant, in s, validation range: (0, nothing)\ne_lim::MinMax: Error limit in PI controller for q control (emin, emax)\nKpq::Float64: PI controller proportional gain for q control, validation range: (0, nothing)\nKiq::Float64: PI controller integral gain for q control, validation range: (0, nothing)\nIqr_lim::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)\nI_max::Float64: Max. inverter's current, validation range: (0, nothing)\nTg::Float64: Current control's time constant, in s, validation range: (0, nothing)\nkWh_Cap::Float64: BESS capacity in kWh, validation range: (0, nothing)\nSOC_ini::Float64: Initial state of charge (SOC) in pu, validation range: (0, 1)\nSOC_lim::MinMax: Battery's SOC limits (SOCmin, SOCmax)\nTrf::Float64: Time constant to estimate system frequency, in s, validation range: (0, nothing)\nfdbd_pnts::NamedTuple{(:fdbd1, :fdbd2), Tuple{Float64, Float64}}: Frequency error dead band thresholds (fdbd1, fdbd2)\nD_dn::Float64: reciprocal of droop for over-frequency conditions, in pu, validation range: (0, nothing)\nD_up::Float64: reciprocal of droop for under-frequency conditions, in pu, validation range: (0, nothing)\nfe_lim::MinMax: Frequency error limits in pu (femin, femax)\nKpp::Float64: PI controller proportional gain for p control, validation range: (0, nothing)\nKip::Float64: PI controller integral gain for p control, validation range: (0, nothing)\nP_lim::MinMax: Active power limits in pu (Pmin, Pmax)\ndP_lim::MinMax: Ramp rate limits for active power in pu/s (dPmin, dPmax)\nT_pord::Float64: Power filter time constant in s, validation range: (0, nothing)\nrrpwr::Float64: Ramp rate for real power increase following a fault, in pu/s, validation range: (0, nothing)\nVRT_pnts::NamedTuple{(:vrt1, :vrt2, :vrt3, :vrt4, :vrt5), Tuple{Float64, Float64, Float64, Float64, Float64}}: Voltage ride through v points (vrt1,vrt2,vrt3,vrt4,vrt5)\nTVRT_pnts::NamedTuple{(:tvrt1, :tvrt2, :tvrt3), Tuple{Float64, Float64, Float64}}: Voltage ride through time points (tvrt1,tvrt2,tvrt3)\ntV_delay::Float64: Time delay for reconnection after voltage ride-through disconnection, validation range: (0, nothing)\nVES_lim::MinMax: Min and max voltage for entering service (VESmin,VESmax)\nFRT_pnts::NamedTuple{(:frt1, :frt2, :frt3, :frt4), Tuple{Float64, Float64, Float64, Float64}}: Frequency ride through v points (frt1,frt2,frt3,frt4)\nTFRT_pnts::NamedTuple{(:tfrt1, :tfrt2), Tuple{Float64, Float64}}: Frequency ride through time points (tfrt1,tfrt2)\ntF_delay::Float64: Time delay for reconnection after frequency ride-through disconnection, validation range: (0, nothing)\nFES_lim::MinMax: Min and max frequency for entering service (FESmin,FESmax)\nPfa_ref::Float64: (default: 0.0) Reference power factor, validation range: (0, nothing)\nQ_ref::Float64: (default: 0.0) Reference reactive power, in pu, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference active power, in pu, validation range: (0, nothing)\nbase_power::Float64: (default: 100.0) Base power of the unit (MVA) for per unitization\nstates::Vector{Symbol}: (Do not modify.) The states of GenericDER depend on the Flags\nn_states::Int: (Do not modify.) The states of GenericDER depend on the Flags\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_GenericDER/#InfrastructureSystems.get_name-Tuple{GenericDER}","page":"GenericDER","title":"InfrastructureSystems.get_name","text":"get_name(value::GenericDER) -> String\n\n\nGet GenericDER name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_D_dn-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_D_dn","text":"get_D_dn(value::GenericDER) -> Float64\n\n\nGet GenericDER D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_D_up-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_D_up","text":"get_D_up(value::GenericDER) -> Float64\n\n\nGet GenericDER D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_FES_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_FES_lim","text":"get_FES_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER FES_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_FRT_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_FRT_pnts","text":"get_FRT_pnts(\n value::GenericDER\n) -> @NamedTuple{frt1::Float64, frt2::Float64, frt3::Float64, frt4::Float64}\n\n\nGet GenericDER FRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Gen_Flag-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Gen_Flag","text":"get_Gen_Flag(value::GenericDER) -> Int64\n\n\nGet GenericDER Gen_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_I_max-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_I_max","text":"get_I_max(value::GenericDER) -> Float64\n\n\nGet GenericDER I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Iqr_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Iqr_lim","text":"get_Iqr_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER Iqr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Kip-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Kip","text":"get_Kip(value::GenericDER) -> Float64\n\n\nGet GenericDER Kip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Kiq-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Kiq","text":"get_Kiq(value::GenericDER) -> Float64\n\n\nGet GenericDER Kiq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Kpp-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Kpp","text":"get_Kpp(value::GenericDER) -> Float64\n\n\nGet GenericDER Kpp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Kpq-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Kpq","text":"get_Kpq(value::GenericDER) -> Float64\n\n\nGet GenericDER Kpq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_PQ_Flag-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_PQ_Flag","text":"get_PQ_Flag(value::GenericDER) -> Int64\n\n\nGet GenericDER PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_P_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_P_lim","text":"get_P_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_P_ref-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::GenericDER) -> Float64\n\n\nGet GenericDER P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_PerOp_Flag-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_PerOp_Flag","text":"get_PerOp_Flag(value::GenericDER) -> Int64\n\n\nGet GenericDER PerOp_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Pfa_ref-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Pfa_ref","text":"get_Pfa_ref(value::GenericDER) -> Float64\n\n\nGet GenericDER Pfa_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Q_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Q_lim","text":"get_Q_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER Q_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Q_ref-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::GenericDER) -> Float64\n\n\nGet GenericDER Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Qref_Flag-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Qref_Flag","text":"get_Qref_Flag(value::GenericDER) -> Int64\n\n\nGet GenericDER Qref_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Recon_Flag-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Recon_Flag","text":"get_Recon_Flag(value::GenericDER) -> Int64\n\n\nGet GenericDER Recon_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_SOC_ini-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_SOC_ini","text":"get_SOC_ini(value::GenericDER) -> Float64\n\n\nGet GenericDER SOC_ini.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_SOC_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_SOC_lim","text":"get_SOC_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER SOC_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_TFRT_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_TFRT_pnts","text":"get_TFRT_pnts(\n value::GenericDER\n) -> @NamedTuple{tfrt1::Float64, tfrt2::Float64}\n\n\nGet GenericDER TFRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_TVRT_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_TVRT_pnts","text":"get_TVRT_pnts(\n value::GenericDER\n) -> @NamedTuple{tvrt1::Float64, tvrt2::Float64, tvrt3::Float64}\n\n\nGet GenericDER TVRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_T_pord-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_T_pord","text":"get_T_pord(value::GenericDER) -> Float64\n\n\nGet GenericDER T_pord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Tg-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Tg","text":"get_Tg(value::GenericDER) -> Float64\n\n\nGet GenericDER Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Tp-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Tp","text":"get_Tp(value::GenericDER) -> Float64\n\n\nGet GenericDER Tp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Trf-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Trf","text":"get_Trf(value::GenericDER) -> Float64\n\n\nGet GenericDER Trf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_Trv-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_Trv","text":"get_Trv(value::GenericDER) -> Float64\n\n\nGet GenericDER Trv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_VES_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_VES_lim","text":"get_VES_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER VES_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_VRT_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_VRT_pnts","text":"get_VRT_pnts(\n value::GenericDER\n) -> @NamedTuple{vrt1::Float64, vrt2::Float64, vrt3::Float64, vrt4::Float64, vrt5::Float64}\n\n\nGet GenericDER VRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_VV_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_VV_pnts","text":"get_VV_pnts(\n value::GenericDER\n) -> @NamedTuple{V1::Float64, V2::Float64, V3::Float64, V4::Float64}\n\n\nGet GenericDER VV_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_base_power-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_base_power","text":"get_base_power(value::GenericDER) -> Float64\n\n\nGet GenericDER base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_dP_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_dP_lim","text":"get_dP_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_e_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_e_lim","text":"get_e_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER e_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_ext-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_ext","text":"get_ext(value::GenericDER) -> Dict{String, Any}\n\n\nGet GenericDER ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_fdbd_pnts-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_fdbd_pnts","text":"get_fdbd_pnts(\n value::GenericDER\n) -> @NamedTuple{fdbd1::Float64, fdbd2::Float64}\n\n\nGet GenericDER fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_fe_lim-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_fe_lim","text":"get_fe_lim(\n value::GenericDER\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GenericDER fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_kWh_Cap-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_kWh_Cap","text":"get_kWh_Cap(value::GenericDER) -> Float64\n\n\nGet GenericDER kWh_Cap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_n_states-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_n_states","text":"get_n_states(value::GenericDER) -> Int64\n\n\nGet GenericDER n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_rrpwr-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_rrpwr","text":"get_rrpwr(value::GenericDER) -> Float64\n\n\nGet GenericDER rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_states-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_states","text":"get_states(value::GenericDER) -> Vector{Symbol}\n\n\nGet GenericDER states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_tF_delay-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_tF_delay","text":"get_tF_delay(value::GenericDER) -> Float64\n\n\nGet GenericDER tF_delay.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.get_tV_delay-Tuple{GenericDER}","page":"GenericDER","title":"PowerSystems.get_tV_delay","text":"get_tV_delay(value::GenericDER) -> Float64\n\n\nGet GenericDER tV_delay.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_D_dn!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_D_dn!","text":"set_D_dn!(value::GenericDER, val) -> Any\n\n\nSet GenericDER D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_D_up!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_D_up!","text":"set_D_up!(value::GenericDER, val) -> Any\n\n\nSet GenericDER D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_FES_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_FES_lim!","text":"set_FES_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER FES_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_FRT_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_FRT_pnts!","text":"set_FRT_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER FRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Gen_Flag!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Gen_Flag!","text":"set_Gen_Flag!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Gen_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_I_max!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::GenericDER, val) -> Any\n\n\nSet GenericDER I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Iqr_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Iqr_lim!","text":"set_Iqr_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Iqr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Kip!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Kip!","text":"set_Kip!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Kip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Kiq!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Kiq!","text":"set_Kiq!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Kiq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Kpp!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Kpp!","text":"set_Kpp!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Kpp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Kpq!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Kpq!","text":"set_Kpq!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Kpq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_PQ_Flag!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_PQ_Flag!","text":"set_PQ_Flag!(value::GenericDER, val) -> Any\n\n\nSet GenericDER PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_P_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_P_lim!","text":"set_P_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_P_ref!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::GenericDER, val) -> Any\n\n\nSet GenericDER P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_PerOp_Flag!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_PerOp_Flag!","text":"set_PerOp_Flag!(value::GenericDER, val) -> Any\n\n\nSet GenericDER PerOp_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Pfa_ref!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Pfa_ref!","text":"set_Pfa_ref!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Pfa_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Q_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Q_lim!","text":"set_Q_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Q_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Q_ref!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Qref_Flag!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Qref_Flag!","text":"set_Qref_Flag!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Qref_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Recon_Flag!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Recon_Flag!","text":"set_Recon_Flag!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Recon_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_SOC_ini!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_SOC_ini!","text":"set_SOC_ini!(value::GenericDER, val) -> Any\n\n\nSet GenericDER SOC_ini.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_SOC_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_SOC_lim!","text":"set_SOC_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER SOC_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_TFRT_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_TFRT_pnts!","text":"set_TFRT_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER TFRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_TVRT_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_TVRT_pnts!","text":"set_TVRT_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER TVRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_T_pord!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_T_pord!","text":"set_T_pord!(value::GenericDER, val) -> Any\n\n\nSet GenericDER T_pord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Tg!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Tg!","text":"set_Tg!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Tp!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Tp!","text":"set_Tp!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Tp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Trf!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Trf!","text":"set_Trf!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Trf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_Trv!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_Trv!","text":"set_Trv!(value::GenericDER, val) -> Any\n\n\nSet GenericDER Trv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_VES_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_VES_lim!","text":"set_VES_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER VES_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_VRT_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_VRT_pnts!","text":"set_VRT_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER VRT_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_VV_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_VV_pnts!","text":"set_VV_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER VV_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_base_power!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::GenericDER, val) -> Any\n\n\nSet GenericDER base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_dP_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_dP_lim!","text":"set_dP_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_e_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_e_lim!","text":"set_e_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER e_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_ext!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_ext!","text":"set_ext!(value::GenericDER, val) -> Any\n\n\nSet GenericDER ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_fdbd_pnts!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_fdbd_pnts!","text":"set_fdbd_pnts!(value::GenericDER, val) -> Any\n\n\nSet GenericDER fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_fe_lim!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_fe_lim!","text":"set_fe_lim!(value::GenericDER, val) -> Any\n\n\nSet GenericDER fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_kWh_Cap!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_kWh_Cap!","text":"set_kWh_Cap!(value::GenericDER, val) -> Any\n\n\nSet GenericDER kWh_Cap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_rrpwr!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_rrpwr!","text":"set_rrpwr!(value::GenericDER, val) -> Any\n\n\nSet GenericDER rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_tF_delay!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_tF_delay!","text":"set_tF_delay!(value::GenericDER, val) -> Any\n\n\nSet GenericDER tF_delay.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericDER/#PowerSystems.set_tV_delay!-Tuple{GenericDER, Any}","page":"GenericDER","title":"PowerSystems.set_tV_delay!","text":"set_tV_delay!(value::GenericDER, val) -> Any\n\n\nSet GenericDER tV_delay.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVR","page":"AVR","title":"AVR","text":"","category":"section"},{"location":"model_library/generated_AVR/#AVRFixed","page":"AVR","title":"AVRFixed","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRFixed","page":"AVR","title":"PowerSystems.AVRFixed","text":"mutable struct AVRFixed <: AVR\n Vf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a AVR that returns a fixed voltage to the rotor winding\n\nArguments\n\nVf::Float64: Fixed voltage field applied to the rotor winding in pu (DEVICE_BASE), validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) Fixed AVR has no states\nn_states::Int: (Do not modify.) Fixed AVR has no states\nstates_types::Vector{StateTypes}: (Do not modify.) Fixed AVR has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRFixed) -> Float64\n\n\nGet AVRFixed V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vf-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_Vf","text":"get_Vf(value::AVRFixed) -> Float64\n\n\nGet AVRFixed Vf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRFixed) -> Dict{String, Any}\n\n\nGet AVRFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRFixed) -> Int64\n\n\nGet AVRFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRFixed) -> Vector{Symbol}\n\n\nGet AVRFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRFixed) -> Vector{StateTypes}\n\n\nGet AVRFixed states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vf!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_Vf!","text":"set_Vf!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed Vf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRSimple","page":"AVR","title":"AVRSimple","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRSimple.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRSimple","page":"AVR","title":"PowerSystems.AVRSimple","text":"mutable struct AVRSimple <: AVR\n Kv::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a simple proportional AVR in the derivative of EMF i.e. an integrator controller on EMF\n\nArguments\n\nKv::Float64: Proportional Gain, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVf: field voltage\n\nn_states::Int: (Do not modify.) Fixed AVR has 1 state\nstates_types::Vector{StateTypes}: (Do not modify.) Simple AVR has 1 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kv-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_Kv","text":"get_Kv(value::AVRSimple) -> Float64\n\n\nGet AVRSimple Kv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRSimple) -> Float64\n\n\nGet AVRSimple V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRSimple) -> Dict{String, Any}\n\n\nGet AVRSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRSimple) -> Int64\n\n\nGet AVRSimple n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRSimple) -> Vector{Symbol}\n\n\nGet AVRSimple states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRSimple) -> Vector{StateTypes}\n\n\nGet AVRSimple states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kv!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_Kv!","text":"set_Kv!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple Kv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRTypeI","page":"AVR","title":"AVRTypeI","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRTypeI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRTypeI","page":"AVR","title":"PowerSystems.AVRTypeI","text":"mutable struct AVRTypeI <: AVR\n Ka::Float64\n Ke::Float64\n Kf::Float64\n Ta::Float64\n Te::Float64\n Tf::Float64\n Tr::Float64\n Va_lim::MinMax\n Ae::Float64\n Be::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of an Automatic Voltage Regulator Type I - Resembles IEEE Type DC1\n\nArguments\n\nKa::Float64: Amplifier Gain, validation range: (0, nothing)\nKe::Float64: Field circuit integral deviation, validation range: (0, nothing)\nKf::Float64: Stabilizer Gain in s * pu/pu, validation range: (0, nothing)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, nothing)\nTe::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)\nTf::Float64: Stabilizer Time Constant in s, validation range: (0, nothing)\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)\nVa_lim::MinMax: Limits for pi controler (Va_min, Va_max)\nAe::Float64: 1st ceiling coefficient, validation range: (0, nothing)\nBe::Float64: 2nd ceiling coefficient, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVf: Voltage field,\nVr1: Amplifier State,\nVr2: Stabilizing Feedback State,\nVm: Measured voltage\n\nn_states::Int: (Do not modify.) The AVR Type I has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) AVR Type I has 4 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ae-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ae","text":"get_Ae(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Be-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Be","text":"get_Be(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::AVRTypeI\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AVRTypeI Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRTypeI) -> Dict{String, Any}\n\n\nGet AVRTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRTypeI) -> Int64\n\n\nGet AVRTypeI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRTypeI) -> Vector{Symbol}\n\n\nGet AVRTypeI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRTypeI) -> Vector{StateTypes}\n\n\nGet AVRTypeI states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ae!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ae!","text":"set_Ae!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Be!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Be!","text":"set_Be!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRTypeII","page":"AVR","title":"AVRTypeII","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRTypeII.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRTypeII","page":"AVR","title":"PowerSystems.AVRTypeII","text":"mutable struct AVRTypeII <: AVR\n K0::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n Te::Float64\n Tr::Float64\n Va_lim::MinMax\n Ae::Float64\n Be::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of an Automatic Voltage Regulator Type II - Typical static exciter model\n\nArguments\n\nK0::Float64: Regulator Gain, validation range: (0, nothing)\nT1::Float64: First Pole in s, validation range: (0, nothing)\nT2::Float64: First zero in s, validation range: (0, nothing)\nT3::Float64: First Pole in s, validation range: (0, nothing)\nT4::Float64: First zero in s, validation range: (0, nothing)\nTe::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)\nVa_lim::MinMax: Limits for pi controler (Va_min, Va_max)\nAe::Float64: 1st ceiling coefficient, validation range: (0, nothing)\nBe::Float64: 2nd ceiling coefficient, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVf: Voltage field,\nVr1: First Lead-Lag state,\nVr2: Second lead-lag state,\nVm: Measured voltage\n\nn_states::Int: (Do not modify.) AVR Type II has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) AVR Type II has 4 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ae-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Ae","text":"get_Ae(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Be-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Be","text":"get_Be(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K0-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_K0","text":"get_K0(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII K0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T1-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T1","text":"get_T1(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T2-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T2","text":"get_T2(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T3-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T3","text":"get_T3(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T4-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T4","text":"get_T4(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::AVRTypeII\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AVRTypeII Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRTypeII) -> Dict{String, Any}\n\n\nGet AVRTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRTypeII) -> Int64\n\n\nGet AVRTypeII n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRTypeII) -> Vector{Symbol}\n\n\nGet AVRTypeII states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRTypeII) -> Vector{StateTypes}\n\n\nGet AVRTypeII states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ae!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Ae!","text":"set_Ae!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Be!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Be!","text":"set_Be!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K0!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_K0!","text":"set_K0!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII K0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T1!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T1!","text":"set_T1!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T2!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T2!","text":"set_T2!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T3!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T3!","text":"set_T3!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T4!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T4!","text":"set_T4!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESAC1A","page":"AVR","title":"ESAC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESAC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESAC1A","page":"AVR","title":"PowerSystems.ESAC1A","text":"mutable struct ESAC1A <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Vr_lim::MinMax\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. This model corresponds to ESAC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2)\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)\nKe::Float64: Exciter field proportional constant, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nVr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) ESAC1A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ESAC1A has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESAC1A) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESAC1A) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESAC1A) -> Float64\n\n\nGet ESAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESAC1A) -> Dict{String, Any}\n\n\nGet ESAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESAC1A) -> Int64\n\n\nGet ESAC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESAC1A\n) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESAC1A) -> Vector{Symbol}\n\n\nGet ESAC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESAC1A) -> Vector{StateTypes}\n\n\nGet ESAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESAC6A","page":"AVR","title":"ESAC6A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESAC6A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESAC6A","page":"AVR","title":"PowerSystems.ESAC6A","text":"mutable struct ESAC6A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tk::Float64\n Tb::Float64\n Tc::Float64\n Va_lim::MinMax\n Vr_lim::MinMax\n Te::Float64\n VFE_lim::Float64\n Kh::Float64\n VH_max::Float64\n Th::Float64\n Tj::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified AC6A. Used to represent field-controlled alternator-rectifier excitation systems with system-supplied electronic voltage regulators. Parameters of IEEE Std 421.5 Type AC6A Excitacion System. ESAC6A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output lag time constant in s, validation range: (0, 10)\nTk::Float64: Voltage Regulator lead time constant, validation range: (0, 10)\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nVr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant, validation range: (eps(), 2)\nVFE_lim::Float64: Exciter field current limiter reference, validation range: (-5, 20)\nKh::Float64: Exciter field current regulator feedback gain, validation range: (0, 100)\nVH_max::Float64: Exciter field current limiter maximum output, validation range: (0, 100)\nTh::Float64: Exciter field current limiter denominator (lag) time constant, validation range: (0, 1)\nTj::Float64: Exciter field current limiter numerator (lead) time constant, validation range: (0, 1)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 2)\nKe::Float64: Exciter field proportional constant, validation range: (0, 2)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) ESAC6A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ESAC6A has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESAC6A) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kh-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kh","text":"get_Kh(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESAC6A) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Th-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Th","text":"get_Th(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tj-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tj","text":"get_Tj(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tj.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tk-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tk","text":"get_Tk(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tk.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VFE_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_VFE_lim","text":"get_VFE_lim(value::ESAC6A) -> Float64\n\n\nGet ESAC6A VFE_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VH_max-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_VH_max","text":"get_VH_max(value::ESAC6A) -> Float64\n\n\nGet ESAC6A VH_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESAC6A) -> Float64\n\n\nGet ESAC6A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESAC6A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC6A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESAC6A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC6A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESAC6A) -> Dict{String, Any}\n\n\nGet ESAC6A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESAC6A) -> Int64\n\n\nGet ESAC6A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESAC6A\n) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESAC6A) -> Vector{Symbol}\n\n\nGet ESAC6A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESAC6A) -> Vector{StateTypes}\n\n\nGet ESAC6A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kh!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kh!","text":"set_Kh!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Th!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Th!","text":"set_Th!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tj!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tj!","text":"set_Tj!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tj.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tk!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tk!","text":"set_Tk!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tk.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VFE_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_VFE_lim!","text":"set_VFE_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A VFE_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VH_max!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_VH_max!","text":"set_VH_max!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A VH_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESAC8B","page":"AVR","title":"ESAC8B","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESAC8B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESAC8B","page":"AVR","title":"PowerSystems.ESAC8B","text":"mutable struct ESAC8B <: AVR\n Tr::Float64\n Kp::Float64\n Ki::Float64\n Kd::Float64\n Td::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Te::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nExcitation System AC8B. Used to represent the Basler Digital Excitation Control System (DECS) with PID controller in PSSE.\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, nothing)\nKp::Float64: Regulator proportional PID gain, validation range: (0, nothing)\nKi::Float64: Regulator integral PID gain, validation range: (0, nothing)\nKd::Float64: Regulator derivative PID gain, validation range: (0, nothing)\nTd::Float64: Regulator derivative PID time constant., validation range: (0, 10)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output lag time constant in s, validation range: (0, 10)\nVr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant, validation range: (eps(), 2)\nKe::Float64: Exciter field proportional constant, validation range: (0, 2)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nx_i: Internal PI-block state,\nx_d: Internal Derivative-block state,\nVr: Voltage regulator state,\nEfd: Exciter output state\n\nn_states::Int: (Do not modify.) ESAC8B has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ESAC8B has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESAC8B) -> Tuple{Float64, Float64}\n\n\nGet ESAC8B E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ki-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Ki","text":"get_Ki(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kp-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Kp","text":"get_Kp(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESAC8B) -> Tuple{Float64, Float64}\n\n\nGet ESAC8B Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Td-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Td","text":"get_Td(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESAC8B) -> Float64\n\n\nGet ESAC8B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESAC8B) -> Float64\n\n\nGet ESAC8B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESAC8B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC8B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESAC8B) -> Dict{String, Any}\n\n\nGet ESAC8B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESAC8B) -> Int64\n\n\nGet ESAC8B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESAC8B\n) -> Tuple{Float64, Float64}\n\n\nGet ESAC8B saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESAC8B) -> Vector{Symbol}\n\n\nGet ESAC8B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESAC8B}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESAC8B) -> Vector{StateTypes}\n\n\nGet ESAC8B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ki!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kp!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Td!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Td!","text":"set_Td!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESAC8B, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESAC8B, val) -> Any\n\n\nSet ESAC8B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESDC1A","page":"AVR","title":"ESDC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESDC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESDC1A","page":"AVR","title":"PowerSystems.ESDC1A","text":"mutable struct ESDC1A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tb::Float64\n Tc::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSelf-excited shunt fields with the voltage regulator operating in a mode commonly termed buck-boost. Parameters of IEEE Std 421.5 Type DC1A Excitacion System. This model corresponds to ESDC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)\nKa::Float64: Amplifier Gain, validation range: (10, 500)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1)\nTb::Float64: Regulator input Time Constant in s, validation range: (0, nothing)\nTc::Float64: Regulator input Time Constant in s, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (0, nothing)\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1)\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)\nTf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing)\nswitch::Int: Switch, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVt: Terminal Voltage,\nVr1: input lead lag,\nVr2: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: (Do not modify.) The ESDC1A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ESDC1A has 5 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESDC1A) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESDC1A) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESDC1A) -> Float64\n\n\nGet ESDC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESDC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESDC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESDC1A) -> Dict{String, Any}\n\n\nGet ESDC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESDC1A) -> Int64\n\n\nGet ESDC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESDC1A\n) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESDC1A) -> Vector{Symbol}\n\n\nGet ESDC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESDC1A) -> Vector{StateTypes}\n\n\nGet ESDC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::ESDC1A) -> Int64\n\n\nGet ESDC1A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESDC2A","page":"AVR","title":"ESDC2A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESDC2A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESDC2A","page":"AVR","title":"PowerSystems.ESDC2A","text":"mutable struct ESDC2A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tb::Float64\n Tc::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIs used to represent field-controlled dc commutator exciters with continuously acting voltage regulators having power supplies derived from the generator or auxiliaries bus. Parameters of IEEE Std 421.5 Type DC2A Excitacion System. This model corresponds to ESDC2A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)\nKa::Float64: Amplifier Gain, validation range: (10, 500)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1)\nTb::Float64: Regulator input Time Constant in s, validation range: (0, nothing)\nTc::Float64: Regulator input Time Constant in s, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 2)\nKf::Float64: Excitation control system stabilizer gain, validation range: (0, 0.3)\nTf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5.0 <= Tf/Kf <= 15.0, validation range: (eps(), 1.5)\nswitch::Int: Switch, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVt: Terminal Voltage,\nVr1: input lead lag,\nVr2: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: (Do not modify.) The ESDC2A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ESDC2A has 5 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESDC2A) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESDC2A) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESDC2A) -> Float64\n\n\nGet ESDC2A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESDC2A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESDC2A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESDC2A) -> Dict{String, Any}\n\n\nGet ESDC2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESDC2A) -> Int64\n\n\nGet ESDC2A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESDC2A\n) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESDC2A) -> Vector{Symbol}\n\n\nGet ESDC2A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESDC2A) -> Vector{StateTypes}\n\n\nGet ESDC2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::ESDC2A) -> Int64\n\n\nGet ESDC2A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESST1A","page":"AVR","title":"ESST1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESST1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESST1A","page":"AVR","title":"PowerSystems.ESST1A","text":"mutable struct ESST1A <: AVR\n UEL_flags::Int\n PSS_flags::Int\n Tr::Float64\n Vi_lim::Tuple{Float64, Float64}\n Tc::Float64\n Tb::Float64\n Tc1::Float64\n Tb1::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Vr_lim::MinMax\n Kc::Float64\n Kf::Float64\n Tf::Float64\n K_lr::Float64\n I_lr::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis excitation system supplies power through a transformer from the generator terminals and its regulated by a controlled rectifier (via thyristors). Parameters of IEEE Std 421.5 Type ST1A Excitacion System. ESST1A in PSSE and PSLF\n\nArguments\n\nUEL_flags::Int: Code input for Underexcitization limiter (UEL) entry. Not supported, validation range: (1, 3)\nPSS_flags::Int: Code input for Power System Stabilizer (PSS) or (VOS) entry, validation range: (1, 2)\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.1)\nVi_lim::Tuple{Float64, Float64}: Voltage error limits (regulator input) (Vimin, Vimax)\nTc::Float64: First regulator denominator (lead) time constant in s, validation range: (0, 10)\nTb::Float64: First regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 10)\nTb1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 20)\nKa::Float64: Voltage regulator gain, validation range: (50, 1000)\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 0.5)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nVr_lim::MinMax: Limits for exciter output (Vr_min, Vr_max)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 0.3)\nKf::Float64: Rate feedback gain, validation range: (0, 0.3)\nTf::Float64: Rate feedback time constant in s, validation range: (eps(), 1.5)\nK_lr::Float64: Exciter output current limiter gain, validation range: (0, 5)\nI_lr::Float64: Exciter output current limit reference, validation range: (0, 5)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: First Lead-lag state,\nVr2: Second lead-lag state,\nVa: Regulator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) ST1A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ST1A has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_I_lr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_I_lr","text":"get_I_lr(value::ESST1A) -> Float64\n\n\nGet ESST1A I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_lr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_K_lr","text":"get_K_lr(value::ESST1A) -> Float64\n\n\nGet ESST1A K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESST1A) -> Float64\n\n\nGet ESST1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESST1A) -> Float64\n\n\nGet ESST1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESST1A) -> Float64\n\n\nGet ESST1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_PSS_flags-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_PSS_flags","text":"get_PSS_flags(value::ESST1A) -> Int64\n\n\nGet ESST1A PSS_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESST1A) -> Float64\n\n\nGet ESST1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESST1A) -> Float64\n\n\nGet ESST1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb1-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tb1","text":"get_Tb1(value::ESST1A) -> Float64\n\n\nGet ESST1A Tb1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESST1A) -> Float64\n\n\nGet ESST1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc1-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tc1","text":"get_Tc1(value::ESST1A) -> Float64\n\n\nGet ESST1A Tc1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESST1A) -> Float64\n\n\nGet ESST1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESST1A) -> Float64\n\n\nGet ESST1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_UEL_flags-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_UEL_flags","text":"get_UEL_flags(value::ESST1A) -> Int64\n\n\nGet ESST1A UEL_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESST1A) -> Float64\n\n\nGet ESST1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESST1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vi_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Vi_lim","text":"get_Vi_lim(value::ESST1A) -> Tuple{Float64, Float64}\n\n\nGet ESST1A Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESST1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESST1A) -> Dict{String, Any}\n\n\nGet ESST1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESST1A) -> Int64\n\n\nGet ESST1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESST1A) -> Vector{Symbol}\n\n\nGet ESST1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESST1A) -> Vector{StateTypes}\n\n\nGet ESST1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_I_lr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_I_lr!","text":"set_I_lr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_lr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_K_lr!","text":"set_K_lr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_PSS_flags!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_PSS_flags!","text":"set_PSS_flags!(value::ESST1A, val) -> Any\n\n\nSet ESST1A PSS_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb1!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tb1!","text":"set_Tb1!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tb1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc1!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tc1!","text":"set_Tc1!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tc1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_UEL_flags!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_UEL_flags!","text":"set_UEL_flags!(value::ESST1A, val) -> Any\n\n\nSet ESST1A UEL_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESST1A, val) -> Any\n\n\nSet ESST1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vi_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Vi_lim!","text":"set_Vi_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESST1A, val) -> Any\n\n\nSet ESST1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESST1A, val) -> Any\n\n\nSet ESST1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESST4B","page":"AVR","title":"ESST4B","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESST4B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESST4B","page":"AVR","title":"PowerSystems.ESST4B","text":"mutable struct ESST4B <: AVR\n Tr::Float64\n K_pr::Float64\n K_ir::Float64\n Vr_lim::MinMax\n Ta::Float64\n K_pm::Float64\n K_im::Float64\n Vm_lim::MinMax\n Kg::Float64\n Kp::Float64\n Ki::Float64\n VB_max::Float64\n Kc::Float64\n Xl::Float64\n θp::Float64\n V_ref::Float64\n θp_rad::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIn these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST4B Excitacion System. ESST4B in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nK_pr::Float64: Regulator propotional gain, validation range: (0, 75)\nK_ir::Float64: Regulator integral gain, validation range: (0, 75)\nVr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 1)\nK_pm::Float64: Voltage regulator proportional gain output, validation range: (0, 1.2)\nK_im::Float64: Voltage regulator integral gain output, validation range: (0, 18)\nVm_lim::MinMax: Limits for inner loop output (Vm_min, Vm_max)\nKg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, 1.1)\nKp::Float64: Potential circuit (voltage) gain coefficient, validation range: (0, 10)\nKi::Float64: Compound circuit (current) gain coefficient, validation range: (0, 1.1)\nVB_max::Float64: Maximum available exciter voltage, validation range: (1, 20)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nXl::Float64: Reactance associated with potential source, validation range: (0, 0.5)\nθp::Float64: Potential circuit phase angle (degrees), validation range: (-90, 90)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nθp_rad::Float64: (default: θp*π*inv(180)) (Do not modify.) Potential circuit phase angle (radians)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVt: Sensed Terminal Voltage,\nVr1: Regulator Integrator,\nVr2: Regulator Output,\nVm: Output integrator\n\nn_states::Int: (Do not modify.) ST4B has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) ST4B has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_im-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_im","text":"get_K_im(value::ESST4B) -> Float64\n\n\nGet ESST4B K_im.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ir-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_ir","text":"get_K_ir(value::ESST4B) -> Float64\n\n\nGet ESST4B K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pm-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_pm","text":"get_K_pm(value::ESST4B) -> Float64\n\n\nGet ESST4B K_pm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pr-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_pr","text":"get_K_pr(value::ESST4B) -> Float64\n\n\nGet ESST4B K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESST4B) -> Float64\n\n\nGet ESST4B Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kg-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kg","text":"get_Kg(value::ESST4B) -> Float64\n\n\nGet ESST4B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ki-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Ki","text":"get_Ki(value::ESST4B) -> Float64\n\n\nGet ESST4B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kp-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kp","text":"get_Kp(value::ESST4B) -> Float64\n\n\nGet ESST4B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESST4B) -> Float64\n\n\nGet ESST4B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESST4B) -> Float64\n\n\nGet ESST4B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VB_max-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_VB_max","text":"get_VB_max(value::ESST4B) -> Float64\n\n\nGet ESST4B VB_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESST4B) -> Float64\n\n\nGet ESST4B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vm_lim-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Vm_lim","text":"get_Vm_lim(\n value::ESST4B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST4B Vm_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESST4B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST4B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Xl-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Xl","text":"get_Xl(value::ESST4B) -> Float64\n\n\nGet ESST4B Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESST4B) -> Dict{String, Any}\n\n\nGet ESST4B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESST4B) -> Int64\n\n\nGet ESST4B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESST4B) -> Vector{Symbol}\n\n\nGet ESST4B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESST4B) -> Vector{StateTypes}\n\n\nGet ESST4B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_θp-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_θp","text":"get_θp(value::ESST4B) -> Float64\n\n\nGet ESST4B θp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_θp_rad-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_θp_rad","text":"get_θp_rad(value::ESST4B) -> Float64\n\n\nGet ESST4B θp_rad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_im!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_im!","text":"set_K_im!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_im.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ir!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_ir!","text":"set_K_ir!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pm!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_pm!","text":"set_K_pm!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_pm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pr!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_pr!","text":"set_K_pr!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kg!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kg!","text":"set_Kg!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ki!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kp!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VB_max!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_VB_max!","text":"set_VB_max!(value::ESST4B, val) -> Any\n\n\nSet ESST4B VB_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESST4B, val) -> Any\n\n\nSet ESST4B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vm_lim!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Vm_lim!","text":"set_Vm_lim!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Vm_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Xl!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESST4B, val) -> Any\n\n\nSet ESST4B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESST4B, val) -> Any\n\n\nSet ESST4B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_θp!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_θp!","text":"set_θp!(value::ESST4B, val) -> Any\n\n\nSet ESST4B θp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_θp_rad!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_θp_rad!","text":"set_θp_rad!(value::ESST4B, val) -> Any\n\n\nSet ESST4B θp_rad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC1","page":"AVR","title":"EXAC1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC1","page":"AVR","title":"PowerSystems.EXAC1","text":"mutable struct EXAC1 <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A. EXAC1 in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVr_lim::MinMax: Limits for regulator output (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2)\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)\nKe::Float64: Exciter field proportional constant, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) EXAC1 has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) EXAC1 has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC1) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC1) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC1) -> Float64\n\n\nGet EXAC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC1) -> Float64\n\n\nGet EXAC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC1) -> Dict{String, Any}\n\n\nGet EXAC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC1) -> Int64\n\n\nGet EXAC1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC1\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC1) -> Vector{Symbol}\n\n\nGet EXAC1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC1) -> Vector{StateTypes}\n\n\nGet EXAC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC1A","page":"AVR","title":"EXAC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC1A","page":"AVR","title":"PowerSystems.EXAC1A","text":"mutable struct EXAC1A <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Vr_lim::MinMax\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. EXAC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2)\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)\nKe::Float64: Exciter field proportional constant, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nVr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) EXAC1A has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) EXAC1A has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC1A) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC1A) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC1A) -> Float64\n\n\nGet EXAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC1A) -> Dict{String, Any}\n\n\nGet EXAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC1A) -> Int64\n\n\nGet EXAC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC1A\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC1A) -> Vector{Symbol}\n\n\nGet EXAC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC1A) -> Vector{StateTypes}\n\n\nGet EXAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC2","page":"AVR","title":"EXAC2","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC2.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC2","page":"AVR","title":"PowerSystems.EXAC2","text":"mutable struct EXAC2 <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Kb::Float64\n Vr_lim::MinMax\n Te::Float64\n Kl::Float64\n Kh::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n V_lr::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified AC2. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC2A Excitacion System. The alternator main exciter is used, feeding its output via non-controlled rectifiers. The Type AC2C model is similar to that of Type AC1C except for the inclusion of exciter time constant compensation and exciter field current limiting elements. EXAC2 in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20)\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nKb::Float64: Second Stage regulator gain, validation range: (eps(), 500)\nVr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant, validation range: (eps(), 2)\nKl::Float64: Exciter field current limiter gain, validation range: (0, 1.1)\nKh::Float64: Exciter field current regulator feedback gain, validation range: (0, 1.1)\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3)\nTf::Float64: Rate feedback time constant, validation range: (eps(), nothing)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1)\nKe::Float64: Exciter field proportional constant, validation range: (0, 1)\nV_lr::Float64: Maximum exciter field current, validation range: (0, nothing)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: (Do not modify.) EXAC2 has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) EXAC2 has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC2) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kb-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kb","text":"get_Kb(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kh-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kh","text":"get_Kh(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kl-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kl","text":"get_Kl(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC2) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC2) -> Float64\n\n\nGet EXAC2 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_lr-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_V_lr","text":"get_V_lr(value::EXAC2) -> Float64\n\n\nGet EXAC2 V_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC2) -> Float64\n\n\nGet EXAC2 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXAC2\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC2 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC2\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC2 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC2) -> Dict{String, Any}\n\n\nGet EXAC2 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC2) -> Int64\n\n\nGet EXAC2 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC2\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC2) -> Vector{Symbol}\n\n\nGet EXAC2 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC2) -> Vector{StateTypes}\n\n\nGet EXAC2 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kb!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kb!","text":"set_Kb!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kh!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kh!","text":"set_Kh!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kl!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kl!","text":"set_Kl!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_lr!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_V_lr!","text":"set_V_lr!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 V_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXPIC1","page":"AVR","title":"EXPIC1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXPIC1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXPIC1","page":"AVR","title":"PowerSystems.EXPIC1","text":"mutable struct EXPIC1 <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Ta_2::Float64\n Ta_3::Float64\n Ta_4::Float64\n Vr_lim::MinMax\n Kf::Float64\n Tf_1::Float64\n Tf_2::Float64\n Efd_lim::MinMax\n Ke::Float64\n Te::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Kp::Float64\n Ki::Float64\n Kc::Float64\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nGeneric Proportional/Integral Excitation System\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5)\nKa::Float64: Voltage regulator gain, validation range: (1, 500)\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for pi controler (Vr_min, Vr_max)\nTa_2::Float64: Voltage regulator time constant in s, validation range: (0, nothing)\nTa_3::Float64: Voltage regulator time constant in s, validation range: (0, nothing)\nTa_4::Float64: Voltage regulator time constant in s, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKf::Float64: Rate feedback gain, validation range: (0, 0.3)\nTf_1::Float64: Rate Feedback time constant in s, validation range: (eps(), 15)\nTf_2::Float64: Rate Feedback time constant in s, validation range: (0, 5)\nEfd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)\nKe::Float64: Exciter constant, validation range: (0, 1)\nTe::Float64: Exciter time constant, validation range: (0, 2)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nKp::Float64: Potential source gain, validation range: (0, 5)\nKi::Float64: current source gain, validation range: (0, 1.1)\nKc::Float64: Exciter regulation factor, validation range: (0, 2)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nVr1: First Lead-lag state,\nVr2: Second regulator lead-lag state,\nVr2: Third regulator lead-lag state \nVf: Exciter output \nVr3: First feedback integrator,\nVr4: second feedback integrator\n\nn_states::Int: (Do not modify.) EXPIC1 has 6 states\nstates_types::Vector{StateTypes}: (Do not modify.) EXPIC has 6 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXPIC1) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Efd_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Efd_lim","text":"get_Efd_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ki-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ki","text":"get_Ki(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kp-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kp","text":"get_Kp(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXPIC1) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_2-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_2","text":"get_Ta_2(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_3-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_3","text":"get_Ta_3(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_4-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_4","text":"get_Ta_4(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf_1-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tf_1","text":"get_Tf_1(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tf_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf_2-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tf_2","text":"get_Tf_2(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tf_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXPIC1) -> Dict{String, Any}\n\n\nGet EXPIC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXPIC1) -> Int64\n\n\nGet EXPIC1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXPIC1\n) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXPIC1) -> Vector{Symbol}\n\n\nGet EXPIC1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXPIC1) -> Vector{StateTypes}\n\n\nGet EXPIC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Efd_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Efd_lim!","text":"set_Efd_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ki!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kp!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_2!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_2!","text":"set_Ta_2!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_3!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_3!","text":"set_Ta_3!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_4!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_4!","text":"set_Ta_4!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf_1!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tf_1!","text":"set_Tf_1!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tf_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf_2!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tf_2!","text":"set_Tf_2!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tf_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#IEEET1","page":"AVR","title":"IEEET1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/IEEET1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.IEEET1","page":"AVR","title":"PowerSystems.IEEET1","text":"mutable struct IEEET1 <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\n1968 IEEE type 1 excitation system model\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5)\nKa::Float64: Amplifier Gain, validation range: (10, 500)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1)\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1)\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)\nTf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5 <= Tf/Kf <= 15, validation range: (eps(), nothing)\nswitch::Int: Switch, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: (default: PowerSystems.get_avr_saturation(E_sat, Se)) (Do not modify.) Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVt: Terminal Voltage,\nVr: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: (Do not modify.) The IEEET1 has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) IEEET1 I has 4 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::IEEET1) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::IEEET1) -> Float64\n\n\nGet IEEET1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::IEEET1) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::IEEET1) -> Float64\n\n\nGet IEEET1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::IEEET1) -> Float64\n\n\nGet IEEET1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::IEEET1) -> Float64\n\n\nGet IEEET1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::IEEET1) -> Float64\n\n\nGet IEEET1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::IEEET1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet IEEET1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::IEEET1) -> Dict{String, Any}\n\n\nGet IEEET1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEET1) -> Int64\n\n\nGet IEEET1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::IEEET1\n) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::IEEET1) -> Vector{Symbol}\n\n\nGet IEEET1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::IEEET1) -> Vector{StateTypes}\n\n\nGet IEEET1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::IEEET1) -> Int64\n\n\nGet IEEET1 switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EX4VSA","page":"AVR","title":"EX4VSA","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EX4VSA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_lim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_E_lim","text":"get_E_lim(\n value::PowerSystems.EX4VSA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EX4VSA E_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_G-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_G","text":"get_G(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA G.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Iflim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Iflim","text":"get_Iflim(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Iflim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K1-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_K1","text":"get_K1(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K2-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_K2","text":"get_K2(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Oel_lim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Oel_lim","text":"get_Oel_lim(\n value::PowerSystems.EX4VSA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EX4VSA Oel_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Spar-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Spar","text":"get_Spar(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Spar.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_d-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_d","text":"get_d(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::PowerSystems.EX4VSA) -> Dict{String, Any}\n\n\nGet EX4VSA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_f-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_f","text":"get_f(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::PowerSystems.EX4VSA) -> Int64\n\n\nGet EX4VSA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::PowerSystems.EX4VSA) -> Vector{Symbol}\n\n\nGet EX4VSA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_lim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_E_lim!","text":"set_E_lim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA E_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_G!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_G!","text":"set_G!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA G.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Iflim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Iflim!","text":"set_Iflim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Iflim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K1!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_K1!","text":"set_K1!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K2!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_K2!","text":"set_K2!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Oel_lim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Oel_lim!","text":"set_Oel_lim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Oel_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Spar!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Spar!","text":"set_Spar!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Spar.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_d!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_d!","text":"set_d!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_f!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_f!","text":"set_f!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXST1","page":"AVR","title":"EXST1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXST1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vi_lim-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Vi_lim","text":"get_Vi_lim(\n value::PowerSystems.EXST1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXST1 Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::PowerSystems.EXST1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXST1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::PowerSystems.EXST1) -> Dict{String, Any}\n\n\nGet EXST1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::PowerSystems.EXST1) -> Int64\n\n\nGet EXST1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::PowerSystems.EXST1) -> Vector{Symbol}\n\n\nGet EXST1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vi_lim!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Vi_lim!","text":"set_Vi_lim!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#SCRX","page":"AVR","title":"SCRX","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/SCRX.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.SCRX","page":"AVR","title":"PowerSystems.SCRX","text":"mutable struct SCRX <: AVR\n Ta_Tb::Float64\n Tb::Float64\n K::Float64\n Te::Float64\n Efd_lim::MinMax\n switch::Int\n rc_rfd::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis exciter is based on an IEEE type SCRX solid state exciter. The output field voltage is varied by a control system to maintain the system voltage at Vref. Please note that this exciter model has no initialization capabilities - this means that it will respond to whatever inputs it receives regardless of the state of the machine model\n\nArguments\n\nTa_Tb::Float64: Lead input constant ratio, validation range: (0.05, 0.3)\nTb::Float64: Lag input constant in s, validation range: (5, 20)\nK::Float64: Regulator Gain, validation range: (20, 100)\nTe::Float64: Regulator Time Constant, validation range: (0, 1)\nEfd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)\nswitch::Int: Switch, validation range: (0, 1)\nrc_rfd::Float64: Field current capability. Set = 0 for negative current capability. Typical value 10, validation range: (0, 10)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVr1: First integrator,\nVr2: Second integrator\n\nn_states::Int: (Do not modify.) SCRX has 2 states\nstates_types::Vector{StateTypes}: (Do not modify.) SCRX has 2 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Efd_lim-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Efd_lim","text":"get_Efd_lim(\n value::SCRX\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SCRX Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_K","text":"get_K(value::SCRX) -> Float64\n\n\nGet SCRX K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_Tb-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Ta_Tb","text":"get_Ta_Tb(value::SCRX) -> Float64\n\n\nGet SCRX Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::SCRX) -> Float64\n\n\nGet SCRX Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::SCRX) -> Float64\n\n\nGet SCRX Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::SCRX) -> Float64\n\n\nGet SCRX V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::SCRX) -> Dict{String, Any}\n\n\nGet SCRX ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::SCRX) -> Int64\n\n\nGet SCRX n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_rc_rfd-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_rc_rfd","text":"get_rc_rfd(value::SCRX) -> Float64\n\n\nGet SCRX rc_rfd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::SCRX) -> Vector{Symbol}\n\n\nGet SCRX states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::SCRX) -> Vector{StateTypes}\n\n\nGet SCRX states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::SCRX) -> Int64\n\n\nGet SCRX switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Efd_lim!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Efd_lim!","text":"set_Efd_lim!(value::SCRX, val) -> Any\n\n\nSet SCRX Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_K!","text":"set_K!(value::SCRX, val) -> Any\n\n\nSet SCRX K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_Tb!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Ta_Tb!","text":"set_Ta_Tb!(value::SCRX, val) -> Any\n\n\nSet SCRX Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::SCRX, val) -> Any\n\n\nSet SCRX Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::SCRX, val) -> Any\n\n\nSet SCRX Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::SCRX, val) -> Any\n\n\nSet SCRX V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::SCRX, val) -> Any\n\n\nSet SCRX ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_rc_rfd!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_rc_rfd!","text":"set_rc_rfd!(value::SCRX, val) -> Any\n\n\nSet SCRX rc_rfd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SCRX, val) -> Any\n\n\nSet SCRX states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::SCRX, val) -> Any\n\n\nSet SCRX switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#SEXS","page":"AVR","title":"SEXS","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/SEXS.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.SEXS","page":"AVR","title":"PowerSystems.SEXS","text":"mutable struct SEXS <: AVR\n Ta_Tb::Float64\n Tb::Float64\n K::Float64\n Te::Float64\n V_lim::MinMax\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of Simplified Excitation System Model - SEXS in PSSE\n\nArguments\n\nTa_Tb::Float64: Ratio of lead and lag time constants, validation range: (0, nothing)\nTb::Float64: Lag time constant, validation range: (eps(), nothing)\nK::Float64: Gain, validation range: (0, nothing)\nTe::Float64: Field circuit time constant in s, validation range: (0, nothing)\nV_lim::MinMax: Field voltage limits\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\tVf: Voltage field,\tVr: Lead-lag state\nn_states::Int: (Do not modify.) SEXS has 2 states\nstates_types::Vector{StateTypes}: (Do not modify.) SEXS has 2 differential states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_K-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_K","text":"get_K(value::SEXS) -> Float64\n\n\nGet SEXS K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_Tb-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Ta_Tb","text":"get_Ta_Tb(value::SEXS) -> Float64\n\n\nGet SEXS Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::SEXS) -> Float64\n\n\nGet SEXS Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::SEXS) -> Float64\n\n\nGet SEXS Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_lim-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_V_lim","text":"get_V_lim(\n value::SEXS\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SEXS V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::SEXS) -> Float64\n\n\nGet SEXS V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::SEXS) -> Dict{String, Any}\n\n\nGet SEXS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::SEXS) -> Int64\n\n\nGet SEXS n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::SEXS) -> Vector{Symbol}\n\n\nGet SEXS states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::SEXS) -> Vector{StateTypes}\n\n\nGet SEXS states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_K!","text":"set_K!(value::SEXS, val) -> Any\n\n\nSet SEXS K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_Tb!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Ta_Tb!","text":"set_Ta_Tb!(value::SEXS, val) -> Any\n\n\nSet SEXS Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::SEXS, val) -> Any\n\n\nSet SEXS Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::SEXS, val) -> Any\n\n\nSet SEXS Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_lim!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::SEXS, val) -> Any\n\n\nSet SEXS V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::SEXS, val) -> Any\n\n\nSet SEXS V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::SEXS, val) -> Any\n\n\nSet SEXS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SEXS, val) -> Any\n\n\nSet SEXS states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ST6B","page":"AVR","title":"ST6B","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ST6B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ST6B","page":"AVR","title":"PowerSystems.ST6B","text":"mutable struct ST6B <: AVR\n OEL_Flag::Int\n Tr::Float64\n K_pa::Float64\n K_ia::Float64\n K_da::Float64\n T_da::Float64\n Va_lim::MinMax\n K_ff::Float64\n K_m::Float64\n K_ci::Float64\n K_lr::Float64\n I_lr::Float64\n Vr_lim::MinMax\n Kg::Float64\n Tg::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIn these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST6B Excitacion System. ST6B in PSSE and PSLF\n\nArguments\n\nOEL_Flag::Int: OEL Flag for ST6B: 1: before HV gate, 2: after HV gate, validation range: (0, 2)\nTr::Float64: Regulator input filter time constant in s, validation range: (0, nothing)\nK_pa::Float64: Regulator proportional gain, validation range: (0, nothing)\nK_ia::Float64: Regulator integral gain, validation range: (0, nothing)\nK_da::Float64: Regulator derivative gain, validation range: (0, nothing)\nT_da::Float64: Voltage regulator derivative channel time constant in s, validation range: (0, nothing)\nVa_lim::MinMax: Regulator output limits (Vimin, Vimax)\nK_ff::Float64: Pre-control gain of the inner loop field regulator, validation range: (0, nothing)\nK_m::Float64: Forward gain of the inner loop field regulator, validation range: (0, nothing)\nK_ci::Float64: Exciter output current limit adjustment gain, validation range: (0, nothing)\nK_lr::Float64: Exciter output current limiter gain, validation range: (0, nothing)\nI_lr::Float64: Exciter current limiter reference, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)\nKg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, nothing)\nTg::Float64: Feedback time constant of the inner loop field voltage regulator in s, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nx_i: Regulator Integrator,\nx_d: Regulator Derivative,\nVg: Regulator Feedback\n\nn_states::Int: (Do not modify.) ST6B has 4 states\nstates_types::Vector{StateTypes}: (Do not modify.) ST6B has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_I_lr-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_I_lr","text":"get_I_lr(value::ST6B) -> Float64\n\n\nGet ST6B I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ci-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_ci","text":"get_K_ci(value::ST6B) -> Float64\n\n\nGet ST6B K_ci.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_da-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_da","text":"get_K_da(value::ST6B) -> Float64\n\n\nGet ST6B K_da.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ff-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_ff","text":"get_K_ff(value::ST6B) -> Float64\n\n\nGet ST6B K_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ia-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_ia","text":"get_K_ia(value::ST6B) -> Float64\n\n\nGet ST6B K_ia.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_lr-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_lr","text":"get_K_lr(value::ST6B) -> Float64\n\n\nGet ST6B K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_m-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_m","text":"get_K_m(value::ST6B) -> Float64\n\n\nGet ST6B K_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pa-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_K_pa","text":"get_K_pa(value::ST6B) -> Float64\n\n\nGet ST6B K_pa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kg-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_Kg","text":"get_Kg(value::ST6B) -> Float64\n\n\nGet ST6B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_OEL_Flag-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_OEL_Flag","text":"get_OEL_Flag(value::ST6B) -> Int64\n\n\nGet ST6B OEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T_da-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_T_da","text":"get_T_da(value::ST6B) -> Float64\n\n\nGet ST6B T_da.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tg-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_Tg","text":"get_Tg(value::ST6B) -> Float64\n\n\nGet ST6B Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ST6B) -> Float64\n\n\nGet ST6B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ST6B) -> Float64\n\n\nGet ST6B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ST6B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ST6B Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ST6B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ST6B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ST6B) -> Dict{String, Any}\n\n\nGet ST6B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ST6B) -> Int64\n\n\nGet ST6B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ST6B) -> Vector{Symbol}\n\n\nGet ST6B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ST6B}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ST6B) -> Vector{StateTypes}\n\n\nGet ST6B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_I_lr!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_I_lr!","text":"set_I_lr!(value::ST6B, val) -> Any\n\n\nSet ST6B I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ci!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_ci!","text":"set_K_ci!(value::ST6B, val) -> Any\n\n\nSet ST6B K_ci.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_da!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_da!","text":"set_K_da!(value::ST6B, val) -> Any\n\n\nSet ST6B K_da.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ff!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_ff!","text":"set_K_ff!(value::ST6B, val) -> Any\n\n\nSet ST6B K_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ia!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_ia!","text":"set_K_ia!(value::ST6B, val) -> Any\n\n\nSet ST6B K_ia.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_lr!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_lr!","text":"set_K_lr!(value::ST6B, val) -> Any\n\n\nSet ST6B K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_m!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_m!","text":"set_K_m!(value::ST6B, val) -> Any\n\n\nSet ST6B K_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pa!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_K_pa!","text":"set_K_pa!(value::ST6B, val) -> Any\n\n\nSet ST6B K_pa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kg!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_Kg!","text":"set_Kg!(value::ST6B, val) -> Any\n\n\nSet ST6B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_OEL_Flag!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_OEL_Flag!","text":"set_OEL_Flag!(value::ST6B, val) -> Any\n\n\nSet ST6B OEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T_da!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_T_da!","text":"set_T_da!(value::ST6B, val) -> Any\n\n\nSet ST6B T_da.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tg!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_Tg!","text":"set_Tg!(value::ST6B, val) -> Any\n\n\nSet ST6B Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ST6B, val) -> Any\n\n\nSet ST6B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ST6B, val) -> Any\n\n\nSet ST6B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ST6B, val) -> Any\n\n\nSet ST6B Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ST6B, val) -> Any\n\n\nSet ST6B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ST6B, val) -> Any\n\n\nSet ST6B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ST6B, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ST6B, val) -> Any\n\n\nSet ST6B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ST8C","page":"AVR","title":"ST8C","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ST8C.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ST8C","page":"AVR","title":"PowerSystems.ST8C","text":"mutable struct ST8C <: AVR\n OEL_Flag::Int\n UEL_Flag::Int\n SCL_Flag::Int\n SW1_Flag::Int\n Tr::Float64\n K_pr::Float64\n K_ir::Float64\n Vpi_lim::MinMax\n K_pa::Float64\n K_ia::Float64\n Va_lim::MinMax\n K_a::Float64\n T_a::Float64\n Vr_lim::MinMax\n K_f::Float64\n T_f::Float64\n K_c1::Float64\n K_p::Float64\n K_i1::Float64\n X_l::Float64\n θ_p::Float64\n VB1_max::Float64\n K_c2::Float64\n K_i2::Float64\n VB2_max::Float64\n V_ref::Float64\n Ifd_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIn these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST8C Excitacion System. ST8C in PSSE and PSLF\n\nArguments\n\nOEL_Flag::Int: OEL Flag for ST8C: <2: Summation at Voltage Error, 2: OEL takeover at gate, validation range: (0, 2)\nUEL_Flag::Int: UEL Flag for ST8C: <2: Summation at Voltage Error, 2: UEL takeover at gate, validation range: (0, 2)\nSCL_Flag::Int: SCL Flag for ST8C: <2: Summation at Voltage Error, 2: SCL Takeover at UEL and OEL gates, validation range: (0, 2)\nSW1_Flag::Int: SW1 Flag for Power Source Selector for ST8C: <2: Source from generator terminal voltage, 2: Independent power source, validation range: (0, 2)\nTr::Float64: Regulator input filter time constant in seconds, validation range: (0, nothing)\nK_pr::Float64: Regulator proportional gain (pu), validation range: (0, nothing)\nK_ir::Float64: Regulator integral gain (pu), validation range: (0, nothing)\nVpi_lim::MinMax: Regulator input limits (Vpimin, Vpimax)\nK_pa::Float64: Field current regulator proportional gain (pu), validation range: (0, nothing)\nK_ia::Float64: Field current regulator integral gain (pu), validation range: (0, nothing)\nVa_lim::MinMax: Field current regulator output limits (Vamin, Vamax)\nK_a::Float64: Field current regulator proportional gain (pu), validation range: (0, nothing)\nT_a::Float64: Controlled rectifier bridge equivalent time constant in seconds, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (Vrmin, Vrmax)\nK_f::Float64: Exciter field current feedback gain (pu), validation range: (0, nothing)\nT_f::Float64: Field current feedback time constant in seconds, validation range: (0, nothing)\nK_c1::Float64: Rectifier loading factor proportional to commutating reactance (pu), validation range: (0, nothing)\nK_p::Float64: Potential circuit (voltage) gain coefficient (pu), validation range: (0, nothing)\nK_i1::Float64: Potential circuit (current) gain coefficient (pu), validation range: (0, nothing)\nX_l::Float64: Reactance associated with potential source (pu), validation range: (0, nothing)\nθ_p::Float64: Potential circuit phase angle (degrees), validation range: (0, nothing)\nVB1_max::Float64: Maximum available exciter voltage (pu), validation range: (0, nothing)\nK_c2::Float64: Rectifier loading factor proportional to commutating reactance (pu), validation range: (0, nothing)\nK_i2::Float64: Potential circuit (current) gain coefficient (pu), validation range: (0, nothing)\nVB2_max::Float64: Maximum available exciter voltage (pu), validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nIfd_ref::Float64: (default: 1.0) Reference Field Current Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed terminal voltage,\nx_a1: Regulator Integrator state,\nx_a2: Field Current regulator state,\nx_a3: Controller rectifier bridge state,\nx_a4: Regulator Feedback state\n\nn_states::Int: (Do not modify.) ST8C has 5 states\nstates_types::Vector{StateTypes}: (Do not modify.) ST8C has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ifd_ref-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_Ifd_ref","text":"get_Ifd_ref(value::ST8C) -> Float64\n\n\nGet ST8C Ifd_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_a-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_a","text":"get_K_a(value::ST8C) -> Float64\n\n\nGet ST8C K_a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_c1-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_c1","text":"get_K_c1(value::ST8C) -> Float64\n\n\nGet ST8C K_c1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_c2-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_c2","text":"get_K_c2(value::ST8C) -> Float64\n\n\nGet ST8C K_c2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_f-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_f","text":"get_K_f(value::ST8C) -> Float64\n\n\nGet ST8C K_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_i1-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_i1","text":"get_K_i1(value::ST8C) -> Float64\n\n\nGet ST8C K_i1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_i2-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_i2","text":"get_K_i2(value::ST8C) -> Float64\n\n\nGet ST8C K_i2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ia-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_ia","text":"get_K_ia(value::ST8C) -> Float64\n\n\nGet ST8C K_ia.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ir-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_ir","text":"get_K_ir(value::ST8C) -> Float64\n\n\nGet ST8C K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_p-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_p","text":"get_K_p(value::ST8C) -> Float64\n\n\nGet ST8C K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pa-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_pa","text":"get_K_pa(value::ST8C) -> Float64\n\n\nGet ST8C K_pa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pr-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_K_pr","text":"get_K_pr(value::ST8C) -> Float64\n\n\nGet ST8C K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_OEL_Flag-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_OEL_Flag","text":"get_OEL_Flag(value::ST8C) -> Int64\n\n\nGet ST8C OEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_SCL_Flag-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_SCL_Flag","text":"get_SCL_Flag(value::ST8C) -> Int64\n\n\nGet ST8C SCL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_SW1_Flag-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_SW1_Flag","text":"get_SW1_Flag(value::ST8C) -> Int64\n\n\nGet ST8C SW1_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T_a-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_T_a","text":"get_T_a(value::ST8C) -> Float64\n\n\nGet ST8C T_a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T_f-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_T_f","text":"get_T_f(value::ST8C) -> Float64\n\n\nGet ST8C T_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ST8C) -> Float64\n\n\nGet ST8C Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_UEL_Flag-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_UEL_Flag","text":"get_UEL_Flag(value::ST8C) -> Int64\n\n\nGet ST8C UEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VB1_max-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_VB1_max","text":"get_VB1_max(value::ST8C) -> Float64\n\n\nGet ST8C VB1_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VB2_max-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_VB2_max","text":"get_VB2_max(value::ST8C) -> Float64\n\n\nGet ST8C VB2_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ST8C) -> Float64\n\n\nGet ST8C V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ST8C\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ST8C Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vpi_lim-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_Vpi_lim","text":"get_Vpi_lim(\n value::ST8C\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ST8C Vpi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ST8C\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ST8C Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_X_l-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_X_l","text":"get_X_l(value::ST8C) -> Float64\n\n\nGet ST8C X_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ST8C) -> Dict{String, Any}\n\n\nGet ST8C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ST8C) -> Int64\n\n\nGet ST8C n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ST8C) -> Vector{Symbol}\n\n\nGet ST8C states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ST8C) -> Vector{StateTypes}\n\n\nGet ST8C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_θ_p-Tuple{ST8C}","page":"AVR","title":"PowerSystems.get_θ_p","text":"get_θ_p(value::ST8C) -> Float64\n\n\nGet ST8C θ_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ifd_ref!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_Ifd_ref!","text":"set_Ifd_ref!(value::ST8C, val) -> Any\n\n\nSet ST8C Ifd_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_a!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_a!","text":"set_K_a!(value::ST8C, val) -> Any\n\n\nSet ST8C K_a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_c1!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_c1!","text":"set_K_c1!(value::ST8C, val) -> Any\n\n\nSet ST8C K_c1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_c2!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_c2!","text":"set_K_c2!(value::ST8C, val) -> Any\n\n\nSet ST8C K_c2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_f!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_f!","text":"set_K_f!(value::ST8C, val) -> Any\n\n\nSet ST8C K_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_i1!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_i1!","text":"set_K_i1!(value::ST8C, val) -> Any\n\n\nSet ST8C K_i1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_i2!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_i2!","text":"set_K_i2!(value::ST8C, val) -> Any\n\n\nSet ST8C K_i2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ia!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_ia!","text":"set_K_ia!(value::ST8C, val) -> Any\n\n\nSet ST8C K_ia.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ir!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_ir!","text":"set_K_ir!(value::ST8C, val) -> Any\n\n\nSet ST8C K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_p!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::ST8C, val) -> Any\n\n\nSet ST8C K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pa!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_pa!","text":"set_K_pa!(value::ST8C, val) -> Any\n\n\nSet ST8C K_pa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pr!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_K_pr!","text":"set_K_pr!(value::ST8C, val) -> Any\n\n\nSet ST8C K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_OEL_Flag!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_OEL_Flag!","text":"set_OEL_Flag!(value::ST8C, val) -> Any\n\n\nSet ST8C OEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_SCL_Flag!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_SCL_Flag!","text":"set_SCL_Flag!(value::ST8C, val) -> Any\n\n\nSet ST8C SCL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_SW1_Flag!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_SW1_Flag!","text":"set_SW1_Flag!(value::ST8C, val) -> Any\n\n\nSet ST8C SW1_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T_a!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_T_a!","text":"set_T_a!(value::ST8C, val) -> Any\n\n\nSet ST8C T_a.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T_f!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_T_f!","text":"set_T_f!(value::ST8C, val) -> Any\n\n\nSet ST8C T_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ST8C, val) -> Any\n\n\nSet ST8C Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_UEL_Flag!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_UEL_Flag!","text":"set_UEL_Flag!(value::ST8C, val) -> Any\n\n\nSet ST8C UEL_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VB1_max!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_VB1_max!","text":"set_VB1_max!(value::ST8C, val) -> Any\n\n\nSet ST8C VB1_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VB2_max!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_VB2_max!","text":"set_VB2_max!(value::ST8C, val) -> Any\n\n\nSet ST8C VB2_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ST8C, val) -> Any\n\n\nSet ST8C V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ST8C, val) -> Any\n\n\nSet ST8C Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vpi_lim!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_Vpi_lim!","text":"set_Vpi_lim!(value::ST8C, val) -> Any\n\n\nSet ST8C Vpi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ST8C, val) -> Any\n\n\nSet ST8C Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_X_l!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_X_l!","text":"set_X_l!(value::ST8C, val) -> Any\n\n\nSet ST8C X_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ST8C, val) -> Any\n\n\nSet ST8C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ST8C, val) -> Any\n\n\nSet ST8C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_θ_p!-Tuple{ST8C, Any}","page":"AVR","title":"PowerSystems.set_θ_p!","text":"set_θ_p!(value::ST8C, val) -> Any\n\n\nSet ST8C θ_p.\n\n\n\n\n\n","category":"method"},{"location":"how_to/parse_dynamic_data/#dyr_data","page":"...parse PSS/e dynamic data","title":"Parsing PSS/e dynamic data","text":"","category":"section"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"A PowerSystems.jl system can be created using a .RAW and a .DYR file. In this example we will create a three bus system from these example files:","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nRAW_dir = joinpath(file_dir, \"ThreeBusNetwork.raw\")\nDYR_dir = joinpath(file_dir, \"TestGENCLS.dyr\")","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"The data in the RAW file defines a three bus system with three generators, three loads and three branches:","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev\n\n\n 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9\n 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9\n 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9\n0 / END OF BUS DATA, BEGIN LOAD DATA\n 101, 1, 1, 1, 1, 100, 20, 0, 0, 0, 0, 1, 1, 0\n 102, 1, 1, 1, 1, 70, 10, 0, 0, 0, 0, 1, 1, 0\n 103, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0\n0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA\n0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA\n 101, 1, 20, 0, 100, -100, 1.02, 0, 100, 0, 0, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n 102, 1, 100, 0, 100, -100, 1.0142, 0, 100, 0, 0.7, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n 103, 1, 100, 0, 100, -100, 1.0059, 0, 100, 0, 0.2, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n0 / END OF GENERATOR DATA, BEGIN BRANCH DATA\n 101, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 101, 102, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 102, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA\n0 / END OF TRANSFORMER DATA, BEGIN AREA DATA\n0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA\n0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA\n0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA\n0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA\n0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA\n0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA\n0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA\n0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA\n0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA\n0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA\n0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA\n0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA\n0 / END OF INDUCTION MACHINE DATA\nQ","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"The dynamic data for the generators is provided in the DYR file:","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":" 101 'GENROE' 1 8.000000 0.030000 0.400000 0.050000 6.500000 0.000000 1.800000\n 1.700000 0.300000 0.550000 0.250000 0.200000 0.039200 0.267200 /\n 101 'ESST1A' 1 1 1 0.01 99 -99 1 10 1 1 200 0 4 -4 4 -4 0 0 1 0 3 /\n 102 'GENCLS' 1 0.0 0.0 /\n 103 'GENCLS' 1 3.1 2.0 /","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"That assigns a GENROU generator and a ESST1A voltage regulator at the generator located at bus 101, while classic machine models for the generators located at bus 102 and 103.","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"To create the System in PowerSystems.jl, we pass both files directories:","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"dyn_system = System(RAW_dir, DYR_dir; runchecks = false)","category":"page"},{"location":"how_to/parse_dynamic_data/#Supported-PSS/e-Models","page":"...parse PSS/e dynamic data","title":"Supported PSS/e Models","text":"","category":"section"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"PSS/e's dynamic model library is extensive, we currently support parsing a limited amount of models out of the box.","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"Machine models AVR Models Prime Movers PSS models\nGENSAE IEEET1 HYGOV IEEEST\nGENSAL ESDC1A IEEEG1 \nGENROE ESAC1A GGOV1 \nGENCLS ESST4B \nGENROU EXAC2 \n EXPIC1 \n ESAC6A \n EXAC1 \n SCRX \n ESDC2A ","category":"page"},{"location":"how_to/parse_dynamic_data/#Common-Issue:-Unique-Bus-Names","page":"...parse PSS/e dynamic data","title":"Common Issue: Unique Bus Names","text":"","category":"section"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"Please note that while PSS/e does not enforce unique bus names, PowerSystems.jl does. To reparse bus names to comply with this requirement the bus_name_formatter *kwarg can be used in System() as shown in the example below:","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"dyn_system = System(\n RAW_dir,\n DYR_dir;\n bus_name_formatter = x -> strip(string(x[\"name\"])) * \"-\" * string(x[\"index\"]),\n)","category":"page"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"In this example the anonymous function x -> strip(string(x[\"name\"])) * \"-\" * string(x[\"index\"]) takes the bus name and index from PSSe and concatenates them to produce the name.","category":"page"},{"location":"how_to/parse_dynamic_data/#See-also:","page":"...parse PSS/e dynamic data","title":"See also:","text":"","category":"section"},{"location":"how_to/parse_dynamic_data/","page":"...parse PSS/e dynamic data","title":"...parse PSS/e dynamic data","text":"Parsing Matpower or PSS/e RAW Files\nParsing table data (CSV Files)\nParsing time series","category":"page"},{"location":"model_library/generated_ThermalMultiStart/#ThermalMultiStart","page":"ThermalMultiStart","title":"ThermalMultiStart","text":"","category":"section"},{"location":"model_library/generated_ThermalMultiStart/","page":"ThermalMultiStart","title":"ThermalMultiStart","text":"Modules = [PowerSystems]\nPages = [\"generated/ThermalMultiStart.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.ThermalMultiStart","page":"ThermalMultiStart","title":"PowerSystems.ThermalMultiStart","text":"mutable struct ThermalMultiStart <: ThermalGen\n name::String\n available::Bool\n status::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n fuel::ThermalFuels\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n power_trajectory::Union{Nothing, StartUpShutDown}\n time_limits::Union{Nothing, UpDown}\n start_time_limits::Union{Nothing, StartUpStages}\n start_types::Int\n operation_cost::Union{ThermalGenerationCost, MarketBidCost}\n base_power::Float64\n services::Vector{Service}\n time_at_status::Float64\n must_run::Bool\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA thermal generator, such as a fossil fuel or nuclear generator, that can start-up again from a hot, warm, or cold state.\n\nThermalMultiStart has a detailed representation of the start-up process based on the time elapsed since the last shut down, as well as a detailed shut-down process. The model is based on \"Tight and Compact MILP Formulation for the Thermal Unit Commitment Problem.\". For a simplified representation of the start-up and shut-down processes, see ThermalStandard\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nstatus::Bool: Initial commitment condition at the start of a simulation (true = on or false = off)\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Initial active power set point of the unit in MW. For power flow, this is the steady state operating point of the system. For production cost modeling, this may or may not be used as the initial starting point for the solver, depending on the solver used, validation range: active_power_limits\nreactive_power::Float64: Initial reactive power set point of the unit (MVAR), validation range: reactive_power_limits\nrating::Float64: Maximum output power rating of the unit (MVA), validation range: (0, nothing)\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923. Options are listed here\nfuel::ThermalFuels: Prime mover fuel according to EIA 923. Options are listed here\nactive_power_limits::MinMax: Minimum and maximum stable active power levels (MW)\nreactive_power_limits::Union{Nothing, MinMax}: Minimum and maximum reactive power limits. Set to Nothing if not applicable\nramp_limits::Union{Nothing, UpDown}:, validation range: (0, nothing)\npower_trajectory::Union{Nothing, StartUpShutDown}: Power trajectory the unit will take during the start-up and shut-down ramp process, validation range: (0, nothing)\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing)\nstart_time_limits::Union{Nothing, StartUpStages}: Time limits for start-up based on turbine temperature in hours\nstart_types::Int: Number of start-up based on turbine temperature, where 1 = hot, 2 = warm, and 3 = cold, validation range: (1, 3)\noperation_cost::Union{ThermalGenerationCost, MarketBidCost}: OperationalCost of generation\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ntime_at_status::Float64: (default: INFINITE_TIME) Time (e.g., Hours(6)) the generator has been on or off, as indicated by status\nmust_run::Bool: (default: false) Set to true if the unit is must run\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ThermalMultiStart/#InfrastructureSystems.get_name-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"InfrastructureSystems.get_name","text":"get_name(value::ThermalMultiStart) -> String\n\n\nGet ThermalMultiStart name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_active_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_active_power","text":"get_active_power(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_active_power_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::ThermalMultiStart\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet ThermalMultiStart active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_available-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_available","text":"get_available(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_base_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_base_power","text":"get_base_power(value::ThermalMultiStart) -> Float64\n\n\nGet ThermalMultiStart base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_bus-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_bus","text":"get_bus(value::ThermalMultiStart) -> ACBus\n\n\nGet ThermalMultiStart bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_dynamic_injector-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::ThermalMultiStart\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ThermalMultiStart dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_ext-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_ext","text":"get_ext(value::ThermalMultiStart) -> Dict{String, Any}\n\n\nGet ThermalMultiStart ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_fuel-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_fuel","text":"get_fuel(value::ThermalMultiStart) -> ThermalFuels\n\n\nGet ThermalMultiStart fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_must_run-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_must_run","text":"get_must_run(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_operation_cost-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::ThermalMultiStart\n) -> Union{MarketBidCost, ThermalGenerationCost}\n\n\nGet ThermalMultiStart operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_power_trajectory-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_power_trajectory","text":"get_power_trajectory(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:startup, :shutdown), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart power_trajectory.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_prime_mover_type-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::ThermalMultiStart\n) -> PrimeMovers\n\n\nGet ThermalMultiStart prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_ramp_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_rating-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_rating","text":"get_rating(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_reactive_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_reactive_power_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_services-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_services","text":"get_services(value::ThermalMultiStart) -> Vector{Service}\n\n\nGet ThermalMultiStart services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_start_time_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_start_time_limits","text":"get_start_time_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, @NamedTuple{hot::Float64, warm::Float64, cold::Float64}}\n\n\nGet ThermalMultiStart start_time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_start_types-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_start_types","text":"get_start_types(value::ThermalMultiStart) -> Int64\n\n\nGet ThermalMultiStart start_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_status-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_status","text":"get_status(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_time_at_status-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::ThermalMultiStart) -> Float64\n\n\nGet ThermalMultiStart time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_time_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet ThermalMultiStart time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_active_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_active_power_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::ThermalMultiStart,\n val\n) -> Any\n\n\nSet ThermalMultiStart active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_available!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_available!","text":"set_available!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_base_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_bus!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_bus!","text":"set_bus!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_ext!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_ext!","text":"set_ext!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_fuel!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_fuel!","text":"set_fuel!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_must_run!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_must_run!","text":"set_must_run!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_operation_cost!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_power_trajectory!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_power_trajectory!","text":"set_power_trajectory!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart power_trajectory.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_prime_mover_type!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_ramp_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_rating!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_rating!","text":"set_rating!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_reactive_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_reactive_power_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::ThermalMultiStart,\n val\n) -> Any\n\n\nSet ThermalMultiStart reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_services!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_services!","text":"set_services!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_start_time_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_start_time_limits!","text":"set_start_time_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart start_time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_start_types!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_start_types!","text":"set_start_types!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart start_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_status!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_status!","text":"set_status!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_time_at_status!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_time_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#CSVGN1","page":"CSVGN1","title":"CSVGN1","text":"","category":"section"},{"location":"model_library/generated_CSVGN1/","page":"CSVGN1","title":"CSVGN1","text":"Modules = [PowerSystems]\nPages = [\"generated/CSVGN1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_CSVGN1/#PowerSystems.CSVGN1","page":"CSVGN1","title":"PowerSystems.CSVGN1","text":"mutable struct CSVGN1 <: DynamicInjection\n name::String\n K::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T5::Float64\n Rmin::Float64\n Vmax::Float64\n Vmin::Float64\n CBase::Float64\n base_power::Float64\n ext::Dict{String, Any}\n R_th::Float64\n X_th::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of static shunt compensator: CSVGN1 in PSSE\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nK::Float64: Gain in pu (DEVICE_BASE), validation range: (0, nothing)\nT1::Float64: Time constant in s, validation range: (0, nothing)\nT2::Float64: Time constant in s, validation range: (0, nothing)\nT3::Float64: Time constant in s, validation range: (eps(), nothing)\nT4::Float64: Time constant in s, validation range: (0, nothing)\nT5::Float64: Time constant in s, validation range: (0, nothing)\nRmin::Float64: Reactor minimum Mvar, validation range: (0, nothing)\nVmax::Float64: Maximum voltage in pu, validation range: (0, nothing)\nVmin::Float64: Minimum voltage in pu, validation range: (0, nothing)\nCBase::Float64: Capacitor (MVAR), validation range: (0, nothing)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nR_th::Float64: Source Thevenin resistance\nX_th::Float64: Source Thevenin reactance\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nthy: thyristor,\nvr1: regulator output 1,\nvr2: regulator output 2\n\nn_states::Int: (Do not modify.) CSVGN1 has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_CSVGN1/#InfrastructureSystems.get_name-Tuple{CSVGN1}","page":"CSVGN1","title":"InfrastructureSystems.get_name","text":"get_name(value::CSVGN1) -> String\n\n\nGet CSVGN1 name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_CBase-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_CBase","text":"get_CBase(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 CBase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_K-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_K","text":"get_K(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_R_th-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_R_th","text":"get_R_th(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_Rmin-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_Rmin","text":"get_Rmin(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 Rmin.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_T1-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_T1","text":"get_T1(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_T2-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_T2","text":"get_T2(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_T3-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_T3","text":"get_T3(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_T4-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_T4","text":"get_T4(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_T5-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_T5","text":"get_T5(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_Vmax-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_Vmax","text":"get_Vmax(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 Vmax.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_Vmin-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_Vmin","text":"get_Vmin(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 Vmin.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_X_th-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_X_th","text":"get_X_th(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_base_power-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_base_power","text":"get_base_power(value::CSVGN1) -> Float64\n\n\nGet CSVGN1 base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_ext-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_ext","text":"get_ext(value::CSVGN1) -> Dict{String, Any}\n\n\nGet CSVGN1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_n_states-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_n_states","text":"get_n_states(value::CSVGN1) -> Int64\n\n\nGet CSVGN1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.get_states-Tuple{CSVGN1}","page":"CSVGN1","title":"PowerSystems.get_states","text":"get_states(value::CSVGN1) -> Vector{Symbol}\n\n\nGet CSVGN1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_CBase!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_CBase!","text":"set_CBase!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 CBase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_K!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_K!","text":"set_K!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_R_th!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_R_th!","text":"set_R_th!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_Rmin!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_Rmin!","text":"set_Rmin!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 Rmin.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_T1!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_T1!","text":"set_T1!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_T2!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_T2!","text":"set_T2!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_T3!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_T3!","text":"set_T3!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_T4!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_T4!","text":"set_T4!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_T5!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_T5!","text":"set_T5!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_Vmax!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_Vmax!","text":"set_Vmax!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 Vmax.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_Vmin!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_Vmin!","text":"set_Vmin!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 Vmin.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_X_th!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_X_th!","text":"set_X_th!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_base_power!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_CSVGN1/#PowerSystems.set_ext!-Tuple{CSVGN1, Any}","page":"CSVGN1","title":"PowerSystems.set_ext!","text":"set_ext!(value::CSVGN1, val) -> Any\n\n\nSet CSVGN1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#MarketBidCost","page":"MarketBidCost","title":"MarketBidCost","text":"","category":"section"},{"location":"model_library/market_bid_cost/","page":"MarketBidCost","title":"MarketBidCost","text":"Modules = [PowerSystems]\nPages = [\"cost_functions/MarketBidCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/market_bid_cost/#PowerSystems.MarketBidCost","page":"MarketBidCost","title":"PowerSystems.MarketBidCost","text":"mutable struct MarketBidCost <: OperationalCost\n\nno_load_cost::Union{Nothing, Float64, TimeSeriesKey}: No load cost\nstart_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}: Start-up cost at different stages of the thermal cycle as the unit cools after a shutdown (e.g., hot, warm, or cold starts). Warm is also referred to as intermediate in some markets. Can also accept a single value if there is only one start-up cost\nshut_down::Float64: Shut-down cost\nincremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Sell Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve\ndecremental_offer_curves::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}: Buy Offer Curves data, which can be a time series of PiecewiseStepData or a CostCurve of PiecewiseIncrementalCurve\nincremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for incrementaloffercurves, this is a time series of Float64 representing the initial_input\ndecremental_initial_input::Union{Nothing, TimeSeriesKey}: If using a time series for decrementaloffercurves, this is a time series of Float64 representing the initial_input\nancillary_service_offers::Vector{Service}: Bids for the ancillary services\n\nMarketBidCost(no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)\nMarketBidCost(; no_load_cost, start_up, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)\nMarketBidCost(no_load_cost, start_up::Real, shut_down, incremental_offer_curves, decremental_offer_curves, ancillary_service_offers)\n\nAn operating cost for market bids of energy and ancilliary services for any asset. Compatible with most US Market bidding mechanisms that support demand and generation side.\n\n\n\n\n\n","category":"type"},{"location":"model_library/market_bid_cost/#PowerSystems.MarketBidCost-Tuple{Any, Real, Any}","page":"MarketBidCost","title":"PowerSystems.MarketBidCost","text":"MarketBidCost(\n no_load_cost,\n start_up::Real,\n shut_down;\n incremental_offer_curves,\n decremental_offer_curves,\n incremental_initial_input,\n decremental_initial_input,\n ancillary_service_offers\n) -> MarketBidCost\n\n\nAccepts a single start_up value to use as the hot value, with warm and cold set to 0.0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.MarketBidCost-Tuple{Float64, Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}, Vararg{Any, 4}}","page":"MarketBidCost","title":"PowerSystems.MarketBidCost","text":"MarketBidCost(\n no_load_cost::Float64,\n start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},\n shut_down,\n incremental_offer_curves,\n decremental_offer_curves,\n ancillary_service_offers\n) -> MarketBidCost\n\n\nAuxiliary Constructor for TestData\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.MarketBidCost-Tuple{Integer, Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}, Vararg{Any, 6}}","page":"MarketBidCost","title":"PowerSystems.MarketBidCost","text":"MarketBidCost(\n no_load_cost::Integer,\n start_up::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey},\n shut_down,\n incremental_offer_curves,\n decremental_offer_curves,\n incremental_initial_input,\n decremental_initial_input,\n ancillary_service_offers\n) -> MarketBidCost\n\n\nAuxiliary Constructor for Deserialization with Integer at no load cost\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_ancillary_service_offers-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_ancillary_service_offers","text":"get_ancillary_service_offers(\n value::MarketBidCost\n) -> Vector{Service}\n\n\nGet MarketBidCost ancillary_service_offers.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_decremental_initial_input-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_decremental_initial_input","text":"get_decremental_initial_input(\n value::MarketBidCost\n) -> Union{Nothing, TimeSeriesKey}\n\n\nGet MarketBidCost decremental_initial_input.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_decremental_offer_curves-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_decremental_offer_curves","text":"get_decremental_offer_curves(\n value::MarketBidCost\n) -> Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}\n\n\nGet MarketBidCost decremental_offer_curves.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_incremental_initial_input-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_incremental_initial_input","text":"get_incremental_initial_input(\n value::MarketBidCost\n) -> Union{Nothing, TimeSeriesKey}\n\n\nGet MarketBidCost incremental_initial_input.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_incremental_offer_curves-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_incremental_offer_curves","text":"get_incremental_offer_curves(\n value::MarketBidCost\n) -> Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}\n\n\nGet MarketBidCost incremental_offer_curves.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_no_load_cost-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_no_load_cost","text":"get_no_load_cost(\n value::MarketBidCost\n) -> Union{Nothing, Float64, TimeSeriesKey}\n\n\nGet MarketBidCost no_load_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_shut_down-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::MarketBidCost) -> Float64\n\n\nGet MarketBidCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.get_start_up-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_start_up","text":"get_start_up(\n value::MarketBidCost\n) -> Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}\n\n\nGet MarketBidCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.make_market_bid_curve-Tuple{PiecewiseStepData, Float64}","page":"MarketBidCost","title":"PowerSystems.make_market_bid_curve","text":"make_market_bid_curve(\n data::PiecewiseStepData,\n initial_input::Float64;\n power_units,\n input_at_zero\n) -> CostCurve{PiecewiseIncrementalCurve}\n\n\nMake a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from the FunctionData that might be used to store such a cost curve in a time series.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.make_market_bid_curve-Tuple{Vector{Float64}, Vector{Float64}, Float64}","page":"MarketBidCost","title":"PowerSystems.make_market_bid_curve","text":"make_market_bid_curve(\n powers::Vector{Float64},\n marginal_costs::Vector{Float64},\n initial_input::Float64;\n power_units,\n input_at_zero\n) -> CostCurve{PiecewiseIncrementalCurve}\n\n\nMake a CostCurve{PiecewiseIncrementalCurve} suitable for inclusion in a MarketBidCost from a vector of power values, a vector of marginal costs, a float of initial input, and an optional units system and input at zero.\n\nExamples\n\nmbc = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0)\nmbc2 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; input_at_zero = 10.0)\nmbc3 = make_market_bid_curve([0.0, 100.0, 105.0, 120.0, 130.0], [25.0, 26.0, 28.0, 30.0], 10.0; power_inputs = UnitSystem.NATURAL_UNITS)\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_ancillary_service_offers!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_ancillary_service_offers!","text":"set_ancillary_service_offers!(\n value::MarketBidCost,\n val\n) -> Any\n\n\nSet MarketBidCost ancillary_service_offers.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_decremental_initial_input!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_decremental_initial_input!","text":"set_decremental_initial_input!(\n value::MarketBidCost,\n val\n) -> Any\n\n\nSet MarketBidCost decremental_initial_input.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_decremental_offer_curves!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_decremental_offer_curves!","text":"set_decremental_offer_curves!(\n value::MarketBidCost,\n val\n) -> Any\n\n\nSet MarketBidCost incremental_offer_curves.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_incremental_initial_input!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_incremental_initial_input!","text":"set_incremental_initial_input!(\n value::MarketBidCost,\n val\n) -> Any\n\n\nSet MarketBidCost incremental_initial_input.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_incremental_offer_curves!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_incremental_offer_curves!","text":"set_incremental_offer_curves!(\n value::MarketBidCost,\n val\n) -> Any\n\n\nSet MarketBidCost incremental_offer_curves.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_no_load_cost!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_no_load_cost!","text":"set_no_load_cost!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost no_load_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_shut_down!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_start_up!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(\n value::MarketBidCost,\n val\n) -> NamedTuple{(:hot, :warm, :cold), <:Tuple{Any, Float64, Float64}}\n\n\nSet MarketBidCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/market_bid_cost/#PowerSystems.set_start_up!-Tuple{MarketBidCost, Real}","page":"MarketBidCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(\n value::MarketBidCost,\n val::Real\n) -> NamedTuple{(:hot, :warm, :cold), <:Tuple{Any, Float64, Float64}}\n\n\nAuxiliary Method for setting up start up that are not multi-start\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Public-API-Reference","page":"Public API","title":"Public API Reference","text":"","category":"section"},{"location":"api/public/#Modeling","page":"Public API","title":"Modeling","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"PowerSystems.jl\",\n \"branches.jl\",\n \"components.jl\",\n \"injection.jl\",\n \"devices.jl\",\n \"loads.jl\",\n \"supplemental_constructors\",\n \"generation.jl\",\n \"reserves.jl\",\n \"storage.jl\",\n \"services.jl\",\n \"outages.jl\",\n \"topological_elements.jl\",\n \"dynamic_models.jl\",\n \"static_models.jl\",\n \"subsystems.jl\",\n \"static_injection_subsystem.jl\",\n \"dynamic_models.jl\",\n \"operational_cost.jl\",\n \"cost_function_timeseries.jl\",\n \"definitions.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.PowerSystems","page":"Public API","title":"PowerSystems.PowerSystems","text":"Module for constructing self-contained power system objects.\n\n\n\n\n\n","category":"module"},{"location":"api/public/#PowerSystems.Component","page":"Public API","title":"PowerSystems.Component","text":"Supertype for all PowerSystems components. All subtypes must include a InfrastructureSystemsInternal member. Subtypes should call InfrastructureSystemsInternal() by default, but also must provide a constructor that allows existing values to be deserialized.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Device","page":"Public API","title":"PowerSystems.Device","text":"Supertype for \"devices\" (bus, line, etc.) \n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ACBranch","page":"Public API","title":"PowerSystems.ACBranch","text":"Supertype for all AC branches (branches connecting at least one AC node)\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Branch","page":"Public API","title":"PowerSystems.Branch","text":"Supertype for all branches\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.DCBranch","page":"Public API","title":"PowerSystems.DCBranch","text":"Supertype for all DC branches (branches that connect only DC nodes)\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_base_power-Tuple{Component}","page":"Public API","title":"PowerSystems.get_base_power","text":"get_base_power(c::Component) -> Float64\n\n\nDefault behavior of a component. If there is no base_power field, assume is in the system's base power.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_dynamic_injector!-Union{Tuple{U}, Tuple{T}, Tuple{T, U}} where {T<:StaticInjection, U<:Union{Nothing, DynamicInjection}}","page":"Public API","title":"PowerSystems.set_dynamic_injector!","text":"set_dynamic_injector!(\n static_injector::StaticInjection,\n dynamic_injector::Union{Nothing, DynamicInjection}\n)\n\n\nAny StaticInjection struct that wants to support dynamic injectors must implement this method to set the value.\n\nThe method is only for internal uses.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_services!-Tuple{Device}","page":"Public API","title":"PowerSystems.clear_services!","text":"clear_services!(device::Device)\n\n\nRemove all services attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_service-Tuple{Device, Service}","page":"Public API","title":"PowerSystems.has_service","text":"has_service(device::Device, service::Service) -> Bool\n\n\nReturn true if the service is attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_service-Union{Tuple{T}, Tuple{Device, Type{T}}} where T<:Service","page":"Public API","title":"PowerSystems.has_service","text":"has_service(device::Device, _::Type{T<:Service}) -> Bool\n\n\nReturn true if a service with type T is attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_service!-Tuple{Device, Service}","page":"Public API","title":"PowerSystems.remove_service!","text":"remove_service!(device::Device, service::Service)\n\n\nRemove a service from a device.\n\nThrows ArgumentError if the service is not attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.ControllableLoad","page":"Public API","title":"PowerSystems.ControllableLoad","text":"Supertype for all controllable loads\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ElectricLoad","page":"Public API","title":"PowerSystems.ElectricLoad","text":"Supertype for all electric loads\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.StaticLoad","page":"Public API","title":"PowerSystems.StaticLoad","text":"Supertype for all static electric loads\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Generator","page":"Public API","title":"PowerSystems.Generator","text":"Supertype for all generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.HydroGen","page":"Public API","title":"PowerSystems.HydroGen","text":"Supertype for all Hydropower generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.RenewableGen","page":"Public API","title":"PowerSystems.RenewableGen","text":"Supertype for all renewable generation technologies\n\nRequires the implementation of get_ratingand get_power_factor methods\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ThermalGen","page":"Public API","title":"PowerSystems.ThermalGen","text":"Supertype for all Thermal generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_max_active_power-Tuple{T} where T<:RenewableGen","page":"Public API","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(d::RenewableGen) -> Any\n\n\nReturn the max active power for the Renewable Generation calculated as the rating * power_factor\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{T} where T<:RenewableGen","page":"Public API","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::RenewableGen) -> Any\n\n\nReturn the max reactive power for the Renewable Generation calculated as the rating * sin(acos(power_factor))\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.Reserve","page":"Public API","title":"PowerSystems.Reserve","text":"A reserve product to be able to respond to unexpected disturbances, such as the sudden loss of a transmission line or generator.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ReserveDirection","page":"Public API","title":"PowerSystems.ReserveDirection","text":"Used to specify if a Reserve is upwards, downwards, or symmetric\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ReserveDown","page":"Public API","title":"PowerSystems.ReserveDown","text":"A downwards reserve to decrease generation or increase load\n\nDownwards reserves are used when total load falls below its expected level, typically due to forecast errors or contingencies. Not work\n\nA Reserve can be specified as a ReserveDown when it is defined.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ReserveSymmetric","page":"Public API","title":"PowerSystems.ReserveSymmetric","text":"A symmetric reserve, procuring the same quantity (MW) of both upwards and downwards reserves\n\nA symmetric reserve is a special case. ReserveUp and ReserveDown can be used individually to specify different quantities of upwards and downwards reserves, respectively.\n\nA Reserve can be specified as a ReserveSymmetric when it is defined.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ReserveUp","page":"Public API","title":"PowerSystems.ReserveUp","text":"An upwards reserve to increase generation or reduce load\n\nUpwards reserves are used when total load exceeds its expected level, typically due to forecast errors or contingencies.\n\nA Reserve can be specified as a ReserveUp when it is defined.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Storage","page":"Public API","title":"PowerSystems.Storage","text":"Supertype for energy storage technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Service","page":"Public API","title":"PowerSystems.Service","text":"Supertype for all system services\n\nServices (or ancillary services) include additional requirements and support to ensure reliable electricity service to customers. Common services are reserve products to be able to respond quickly to unexpected disturbances, such as the sudden loss of a transmission line or generator.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.GeometricDistributionForcedOutage","page":"Public API","title":"PowerSystems.GeometricDistributionForcedOutage","text":"Attribute that contains information regarding forced outages where the transition probabilities are modeled with geometric distributions. The outage probabilities and recovery probabilities can be modeled as time series.\n\nArguments\n\ntime_to_recovery::Int: Time elapsed to recovery after a failure in Milliseconds.\noutage_transition_probability::Float64: Characterizes the probability of failure (1 - p) in the geometric distribution.\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.PlannedOutage","page":"Public API","title":"PowerSystems.PlannedOutage","text":"Attribute that contains information regarding planned outages.\n\nArguments\n\noutage_schedule::String: String name of the time series used for the scheduled outages\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.TimeSeriesForcedOutage","page":"Public API","title":"PowerSystems.TimeSeriesForcedOutage","text":"Attribute that contains the representation of the status of the component forced outage. The data can be obtained from the simulation of an stochastic process or historical information.\n\nArguments\n\noutage_status_scenario::String: String name of the time series used for the forced outage status in the model. 1 is used represent outaged and 0 for available.\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_mean_time_to_recovery-Tuple{GeometricDistributionForcedOutage}","page":"Public API","title":"PowerSystems.get_mean_time_to_recovery","text":"get_mean_time_to_recovery(\n value::GeometricDistributionForcedOutage\n) -> Float64\n\n\nGet GeometricDistributionForcedOutage time_to_recovery.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_outage_schedule-Tuple{PlannedOutage}","page":"Public API","title":"PowerSystems.get_outage_schedule","text":"get_outage_schedule(value::PlannedOutage) -> String\n\n\nGet PlannedOutage outage_schedule.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_outage_transition_probability-Tuple{GeometricDistributionForcedOutage}","page":"Public API","title":"PowerSystems.get_outage_transition_probability","text":"get_outage_transition_probability(\n value::GeometricDistributionForcedOutage\n) -> Float64\n\n\nGet GeometricDistributionForcedOutage outage_transition_probability.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.AggregationTopology","page":"Public API","title":"PowerSystems.AggregationTopology","text":"Represents a geographical region of system components.\n\nAll subtypes must implement the method get_aggregation_topology_accessor.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Bus","page":"Public API","title":"PowerSystems.Bus","text":"Abstract type to represent any type of Bus, AC or DC.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Topology","page":"Public API","title":"PowerSystems.Topology","text":"Abstract type to represent the structure and interconnectedness of the system\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_aggregation_topology_accessor-Union{Tuple{Type{T}}, Tuple{T}} where T<:AggregationTopology","page":"Public API","title":"PowerSystems.get_aggregation_topology_accessor","text":"get_aggregation_topology_accessor(\n _::Type{T<:AggregationTopology}\n) -> typeof(get_load_zone)\n\n\nReturn the method to be called on a ACBus to get its AggregationTopology value for this type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.StaticInjection","page":"Public API","title":"PowerSystems.StaticInjection","text":"Abstract type for devices that inject power or current\n\nA static injection is a steady state injection, such as modeling the output power of a generator held constant over a five-minute period.\n\nMany StaticInjection models can accept a DynamicInjection model as an optional add-on for conducting dynamic simulations.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.add_component_to_subsystem!-Tuple{System, AbstractString, Component}","page":"Public API","title":"PowerSystems.add_component_to_subsystem!","text":"add_component_to_subsystem!(\n sys::System,\n subsystem_name::AbstractString,\n component::Component\n)\n\n\nAdd a component to a subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_subsystem!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.add_subsystem!","text":"add_subsystem!(sys::System, subsystem_name::AbstractString)\n\n\nAdd a new subsystem to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_assigned_subsystems-Tuple{System, Component}","page":"Public API","title":"PowerSystems.get_assigned_subsystems","text":"get_assigned_subsystems(\n sys::System,\n component::Component\n) -> Vector\n\n\nReturn a Vector of subsystem names that contain the component.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_num_subsystems-Tuple{System}","page":"Public API","title":"PowerSystems.get_num_subsystems","text":"get_num_subsystems(sys::System) -> Int64\n\n\nReturn the number of subsystems stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_subsystem_components-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.get_subsystem_components","text":"get_subsystem_components(\n sys::System,\n subsystem_name::AbstractString\n) -> Base.Generator{Set{Base.UUID}, InfrastructureSystems.var\"#419#420\"{InfrastructureSystems.SystemData}}\n\n\nReturn a Generator of all components in the subsystem.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_subsystems-Tuple{System}","page":"Public API","title":"PowerSystems.get_subsystems","text":"get_subsystems(\n sys::System\n) -> Base.KeySet{String, Dict{String, Set{Base.UUID}}}\n\n\nReturn an iterator of all subsystem names in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_component-Tuple{System, AbstractString, Component}","page":"Public API","title":"PowerSystems.has_component","text":"has_component(\n sys::System,\n subsystem_name::AbstractString,\n component::Component\n) -> Bool\n\n\nReturn true if the component is in the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_subsystems-Tuple{System}","page":"Public API","title":"PowerSystems.has_subsystems","text":"has_subsystems(sys::System) -> Bool\n\n\nReturn true if the system has one or more subsystems.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.is_assigned_to_subsystem-Tuple{System, Component, AbstractString}","page":"Public API","title":"PowerSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n sys::System,\n component::Component,\n subsystem_name::AbstractString\n) -> Bool\n\n\nReturn true if the component is assigned to the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.is_assigned_to_subsystem-Tuple{System, Component}","page":"Public API","title":"PowerSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n sys::System,\n component::Component\n) -> Bool\n\n\nReturn true if the component is assigned to any subsystems.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_component_from_subsystem!-Tuple{System, AbstractString, Component}","page":"Public API","title":"PowerSystems.remove_component_from_subsystem!","text":"remove_component_from_subsystem!(\n sys::System,\n subsystem_name::AbstractString,\n component::Component\n)\n\n\nRemove a component from a subsystem.\n\nThrows ArgumentError if the subsystem name or component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_subsystem!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.remove_subsystem!","text":"remove_subsystem!(\n sys::System,\n subsystem_name::AbstractString\n)\n\n\nRemove a subsystem from the system.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.StaticInjectionSubsystem","page":"Public API","title":"PowerSystems.StaticInjectionSubsystem","text":"Abstract type for a subsystem that contains multiple instances of StaticInjection\n\nSubtypes must implement:\n\nget_subcomponents(subsystem::StaticInjectionSubsystem)\n\nThe subcomponents in subtypes must be attached to the System as masked components.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.copy_subcomponent_time_series!-Tuple{StaticInjectionSubsystem, Component}","page":"Public API","title":"PowerSystems.copy_subcomponent_time_series!","text":"copy_subcomponent_time_series!(\n subsystem::StaticInjectionSubsystem,\n subcomponent::Component\n)\n\n\nEfficiently add all time series data in the subcomponent to the subsystem by copying the underlying references.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.DynamicComponent","page":"Public API","title":"PowerSystems.DynamicComponent","text":"Abstract type for all components used to compose a DynamicInjection device\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.DynamicInjection","page":"Public API","title":"PowerSystems.DynamicInjection","text":"Abstract type for all Dynamic Devices\n\nA dynamic injection is the continuous time response of a generator, typically modeled with differential equations. \n\nDynamicInjection components can added on to StaticInjection components, which together define all the information needed to model the device in a dynamic simulation.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_dynamic_components-Tuple{T} where T<:DynamicInjection","page":"Public API","title":"PowerSystems.get_dynamic_components","text":"get_dynamic_components(\n device::DynamicInjection\n) -> Base.Generator{I, F} where {I<:(Base.Iterators.Filter{PowerSystems.var\"#6#8\", I} where I<:(Base.Iterators.Zip{Is} where Is<:Tuple{Any, Tuple})), F<:(PowerSystems.var\"#5#7\"{<:DynamicInjection})}\n\n\nReturn all the dynamic components of a DynamicInjection device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_states_types-Tuple{DynamicComponent}","page":"Public API","title":"PowerSystems.get_states_types","text":"get_states_types(d::DynamicComponent) -> Vector{StateTypes}\n\n\nDefault implementation of get_state_types for dynamic components. Assumes all states are\nDifferential\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.OperationalCost","page":"Public API","title":"PowerSystems.OperationalCost","text":"Supertype for operational cost representations\n\nCurrent concrete types include:\n\nThermalGenerationCost\nHydroGenerationCost\nRenewableGenerationCost\nStorageCost\nLoadCost\nMarketBidCost\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_fuel_cost-Tuple{StaticInjection}","page":"Public API","title":"InfrastructureSystems.get_fuel_cost","text":"get_fuel_cost(\n component::StaticInjection;\n start_time,\n len\n) -> Union{Float64, TimeSeries.TimeArray}\n\n\nGet the fuel cost of the component's variable cost, which must be a FuelCurve.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_decremental_initial_input-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_decremental_initial_input","text":"get_decremental_initial_input(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Union{Nothing, TimeSeries.TimeArray}\n\n\nRetrieve the decremental_initial_input for a StaticInjection device with a MarketBidCost.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_decremental_offer_curves-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_decremental_offer_curves","text":"get_decremental_offer_curves(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}\n\n\nRetrieve the decremental_offer_curves for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_decremental_variable_cost-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_decremental_variable_cost","text":"get_decremental_variable_cost(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Any\n\n\nRetrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (decremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_incremental_initial_input-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_incremental_initial_input","text":"get_incremental_initial_input(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Union{Nothing, TimeSeries.TimeArray}\n\n\nRetrieve the incremental_initial_input for a StaticInjection device with a MarketBidCost.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_incremental_offer_curves-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_incremental_offer_curves","text":"get_incremental_offer_curves(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}\n\n\nRetrieve the incremental_offer_curves for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_incremental_variable_cost-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_incremental_variable_cost","text":"get_incremental_variable_cost(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Any\n\n\nRetrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (incremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_no_load_cost-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_no_load_cost","text":"get_no_load_cost(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Any\n\n\nRetrieve the no-load cost data for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64 or Nothing.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_services_bid-Tuple{StaticInjection, MarketBidCost, Service}","page":"Public API","title":"PowerSystems.get_services_bid","text":"get_services_bid(\n device::StaticInjection,\n cost::MarketBidCost,\n service::Service;\n start_time,\n len\n) -> TimeSeries.TimeArray\n\n\nReturn service bid time series data for a StaticInjection device with a MarketBidCost. The user may specify start_time and len and the function returns a TimeArray of CostCurves.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_start_up-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_start_up","text":"get_start_up(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeries.TimeArray}\n\n\nRetrieve the startup cost data for a StaticInjection device with a MarketBidCost. If this field is a time series, the user may specify start_time and len and the function returns a TimeArray of Float64s; if the field is not a time series, the function returns a single Float64.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_variable_cost-Tuple{ReserveDemandCurve}","page":"Public API","title":"PowerSystems.get_variable_cost","text":"get_variable_cost(\n service::ReserveDemandCurve;\n start_time,\n len\n) -> Union{CostCurve{PiecewiseIncrementalCurve}, TimeSeries.TimeArray}\n\n\nRetrieve the variable cost data for a ReserveDemandCurve. The user may specify start_time and len and the function returns a TimeArray of CostCurves.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_variable_cost-Tuple{StaticInjection, MarketBidCost}","page":"Public API","title":"PowerSystems.get_variable_cost","text":"get_variable_cost(\n device::StaticInjection,\n cost::MarketBidCost;\n start_time,\n len\n) -> Any\n\n\nRetrieve the variable cost bid for a StaticInjection device with a MarketBidCost. If any of the relevant fields (incremental_offer_curves, initial_input, no_load_cost) are time series, the user may specify start_time and len and the function returns a TimeArray of CostCurves; if the field is not a time series, the function returns a single CostCurve.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_decremental_initial_input!-Tuple{System, StaticInjection, Union{Float64, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_decremental_initial_input!","text":"set_decremental_initial_input!(\n sys::System,\n component::StaticInjection,\n data::Union{Float64, TimeSeriesData}\n) -> TimeSeriesKey\n\n\nSet the decremental_initial_input for a StaticInjection device with a MarketBidCost to either a scalar or a time series.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_decremental_variable_cost!-Tuple{System, StaticInjection, Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData}, UnitSystem}","page":"Public API","title":"PowerSystems.set_decremental_variable_cost!","text":"set_decremental_variable_cost!(\n sys::System,\n component::StaticInjection,\n data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},\n power_units::UnitSystem\n)\n\n\nSet the decremental variable cost bid for a StaticInjection device with a MarketBidCost.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.\npower_units::UnitSystem: Units to be used for data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_fuel_cost!-Tuple{System, StaticInjection, Union{Float64, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_fuel_cost!","text":"set_fuel_cost!(\n sys::System,\n component::StaticInjection,\n data::Union{Float64, TimeSeriesData}\n) -> Any\n\n\nSet the fuel cost of the component's variable cost, which must be a FuelCurve.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_incremental_initial_input!-Tuple{System, StaticInjection, Union{Float64, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_incremental_initial_input!","text":"set_incremental_initial_input!(\n sys::System,\n component::StaticInjection,\n data::Union{Float64, TimeSeriesData}\n) -> TimeSeriesKey\n\n\nSet the incremental_initial_input for a StaticInjection device with a MarketBidCost to either a scalar or a time series.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_incremental_variable_cost!-Tuple{System, StaticInjection, Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData}, UnitSystem}","page":"Public API","title":"PowerSystems.set_incremental_variable_cost!","text":"set_incremental_variable_cost!(\n sys::System,\n component::StaticInjection,\n data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},\n power_units::UnitSystem\n)\n\n\nSet the incremental variable cost bid for a StaticInjection device with a MarketBidCost.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.\npower_units::UnitSystem: Units to be used for data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_no_load_cost!-Tuple{System, StaticInjection, Union{Float64, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_no_load_cost!","text":"set_no_load_cost!(\n sys::System,\n component::StaticInjection,\n data::Union{Float64, TimeSeriesData}\n) -> Union{Float64, TimeSeriesKey}\n\n\nSet the no-load cost for a StaticInjection device with a MarketBidCost to either a scalar or a time series.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Float64, IS.TimeSeriesData},: the data. If a time series, must be of eltype Float64.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_service_bid!-Tuple{System, StaticInjection, Service, TimeSeriesData, UnitSystem}","page":"Public API","title":"PowerSystems.set_service_bid!","text":"set_service_bid!(\n sys::System,\n component::StaticInjection,\n service::Service,\n time_series_data::TimeSeriesData,\n power_units::UnitSystem\n)\n\n\nAdds service bids time-series data to the MarketBidCost.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\nservice::Service,: Service for which the device is eligible to contribute\ntime_series_data::IS.TimeSeriesData: TimeSeriesData\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_start_up!-Tuple{System, StaticInjection, Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_start_up!","text":"set_start_up!(\n sys::System,\n component::StaticInjection,\n data::Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesData}\n) -> Union{@NamedTuple{hot::Float64, warm::Float64, cold::Float64}, TimeSeriesKey}\n\n\nSet the startup cost for a StaticInjection device with a MarketBidCost to either a single StartUpStages or a time series.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{StartUpStages, IS.TimeSeriesData},: the data. If a time series, must be of eltype NTuple{3, Float64}.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_variable_cost!-Tuple{System, ReserveDemandCurve, CostCurve{PiecewiseIncrementalCurve}}","page":"Public API","title":"PowerSystems.set_variable_cost!","text":"set_variable_cost!(\n _::System,\n component::ReserveDemandCurve,\n data::CostCurve{PiecewiseIncrementalCurve}\n) -> CostCurve{PiecewiseIncrementalCurve}\n\n\nAdds fixed energy market bids to the ReserveDemandCurve.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::ReserveDemandCurve: the curve\n`timeseriesdata::CostCurve{PiecewiseIncrementalCurve}\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_variable_cost!-Tuple{System, ReserveDemandCurve, Union{Nothing, TimeSeriesData}}","page":"Public API","title":"PowerSystems.set_variable_cost!","text":"set_variable_cost!(\n sys::System,\n component::ReserveDemandCurve,\n data::Union{Nothing, TimeSeriesData}\n) -> TimeSeriesKey\n\n\nAdds energy market bids time-series to the ReserveDemandCurve.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::ReserveDemandCurve: the curve\ntime_series_data::IS.TimeSeriesData: TimeSeriesData\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_variable_cost!-Tuple{System, StaticInjection, Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData}, UnitSystem}","page":"Public API","title":"PowerSystems.set_variable_cost!","text":"set_variable_cost!(\n sys::System,\n component::StaticInjection,\n data::Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesData},\n power_units::UnitSystem\n)\n\n\nSet the incremental variable cost bid for a StaticInjection device with a MarketBidCost.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::Union{Nothing, IS.TimeSeriesData, CostCurve{PiecewiseIncrementalCurve}},: the data. If using a time series, must be of eltype PiecewiseStepData. PiecewiseIncrementalCurve is only accepted for single CostCurve and not accepted for time series data.\npower_units::UnitSystem: Units to be used for data. Must be NATURAL_UNITS.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Operating-Costs","page":"Public API","title":"Operating Costs","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [InfrastructureSystems]\nPages = [\"production_variable_cost_curve.jl\",\n \"cost_aliases.jl\",\n \"value_curve.jl\",\n ]\nOrder = [:type, :function]\nFilter = t -> nameof(t) in names(PowerSystems)","category":"page"},{"location":"api/public/#InfrastructureSystems.CostCurve","page":"Public API","title":"InfrastructureSystems.CostCurve","text":"struct CostCurve{T<:ValueCurve} <: ProductionVariableCostCurve{T<:ValueCurve}\n\nvalue_curve::ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve\n\nCostCurve(value_curve, power_units, vom_cost)\nCostCurve(; value_curve, power_units, vom_cost)\n\nDirect representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.FuelCurve","page":"Public API","title":"InfrastructureSystems.FuelCurve","text":"struct FuelCurve{T<:ValueCurve} <: ProductionVariableCostCurve{T<:ValueCurve}\n\nvalue_curve::ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nfuel_cost::Union{Float64, TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve\n\nFuelCurve(value_curve, power_units, fuel_cost, vom_cost)\nFuelCurve(value_curve, fuel_cost)\nFuelCurve(value_curve, fuel_cost, vom_cost)\nFuelCurve(value_curve, power_units, fuel_cost)\nFuelCurve(; value_curve, power_units, fuel_cost, vom_cost)\n\nRepresentation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_fuel_cost-Tuple{FuelCurve}","page":"Public API","title":"InfrastructureSystems.get_fuel_cost","text":"get_fuel_cost(\n cost::FuelCurve\n) -> Union{Float64, TimeSeriesKey}\n\n\nGet the fuel cost or the name of the fuel cost time series\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_function_data-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(cost::ProductionVariableCostCurve) -> Any\n\n\nGet the FunctionData representation of this ProductionVariableCostCurve's ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_initial_input-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n cost::ProductionVariableCostCurve\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ProductionVariableCostCurve's ValueCurve (not defined for input-output data)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_power_units-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.get_power_units","text":"get_power_units(cost::ProductionVariableCostCurve) -> Any\n\n\nGet the units for the x-axis of the curve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_value_curve-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.get_value_curve","text":"get_value_curve(cost::ProductionVariableCostCurve) -> Any\n\n\nGet the underlying ValueCurve representation of this ProductionVariableCostCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_vom_cost-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.get_vom_cost","text":"get_vom_cost(cost::ProductionVariableCostCurve) -> Any\n\n\nGet the variable operation and maintenance cost in currency/(power_units h)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.is_convex-Tuple{ProductionVariableCostCurve}","page":"Public API","title":"InfrastructureSystems.is_convex","text":"is_convex(cost::ProductionVariableCostCurve) -> Any\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.LinearCurve","page":"Public API","title":"InfrastructureSystems.LinearCurve","text":"LinearCurve(proportional_term::Float64)\nLinearCurve(proportional_term::Float64, constant_term::Float64)\n\nA linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.\n\nArguments\n\nproportional_term::Float64: marginal rate\nconstant_term::Float64: optional, cost at zero production, defaults to 0.0\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.PiecewiseAverageCurve","page":"Public API","title":"InfrastructureSystems.PiecewiseAverageCurve","text":"PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by average rates between production points. May have nonzero initial value.\n\nArguments\n\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.PiecewiseIncrementalCurve","page":"Public API","title":"InfrastructureSystems.PiecewiseIncrementalCurve","text":"PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\nPiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.\n\nArguments\n\ninput_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.PiecewisePointCurve","page":"Public API","title":"InfrastructureSystems.PiecewisePointCurve","text":"PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})\n\nA piecewise linear curve specified by cost values at production points.\n\nArguments\n\npoints::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.QuadraticCurve","page":"Public API","title":"InfrastructureSystems.QuadraticCurve","text":"QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)\n\nA quadratic input-output curve, may have nonzero no-load cost.\n\nArguments\n\nquadratic_term::Float64: quadratic term of the curve\nproportional_term::Float64: proportional term of the curve\nconstant_term::Float64: constant term of the curve\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_average_rates-Tuple{PiecewiseAverageCurve}","page":"Public API","title":"InfrastructureSystems.get_average_rates","text":"get_average_rates(\n vc::PiecewiseAverageCurve\n) -> Vector{Float64}\n\n\nGet the average rates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_constant_term-Tuple{LinearCurve}","page":"Public API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::LinearCurve) -> Float64\n\n\nGet the constant term (i.e., intercept) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_constant_term-Tuple{QuadraticCurve}","page":"Public API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::QuadraticCurve) -> Float64\n\n\nGet the constant term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_points-Tuple{PiecewisePointCurve}","page":"Public API","title":"InfrastructureSystems.get_points","text":"get_points(\n vc::PiecewisePointCurve\n) -> Vector{@NamedTuple{x::Float64, y::Float64}}\n\n\nGet the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_proportional_term-Tuple{LinearCurve}","page":"Public API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::LinearCurve) -> Float64\n\n\nGet the proportional term (i.e., slope) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_proportional_term-Tuple{QuadraticCurve}","page":"Public API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::QuadraticCurve) -> Float64\n\n\nGet the proportional (i.e., linear) term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_quadratic_term-Tuple{QuadraticCurve}","page":"Public API","title":"InfrastructureSystems.get_quadratic_term","text":"get_quadratic_term(vc::QuadraticCurve) -> Float64\n\n\nGet the quadratic term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_slopes-Tuple{PiecewiseIncrementalCurve}","page":"Public API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewiseIncrementalCurve) -> Vector{Float64}\n\n\nFetch the slopes that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_slopes-Tuple{PiecewisePointCurve}","page":"Public API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nCalculate the slopes of the line segments defined by the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseAverageCurve}","page":"Public API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewiseAverageCurve) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseIncrementalCurve}","page":"Public API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n vc::PiecewiseIncrementalCurve\n) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_x_coords-Tuple{PiecewisePointCurve}","page":"Public API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_y_coords-Tuple{PiecewisePointCurve}","page":"Public API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the y-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.AverageRateCurve","page":"Public API","title":"InfrastructureSystems.AverageRateCurve","text":"An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.IncrementalCurve","page":"Public API","title":"InfrastructureSystems.IncrementalCurve","text":"An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.InputOutputCurve","page":"Public API","title":"InfrastructureSystems.InputOutputCurve","text":"An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.ValueCurve","page":"Public API","title":"InfrastructureSystems.ValueCurve","text":"Supertype that represents a unitless cost curve\n\nConcrete subtypes are:\n\nLinearCurve\nQuadraticCurve\nPiecewisePointCurve\nPiecewiseIncrementalCurve\nPiecewiseAverageCurve\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_function_data-Tuple{ValueCurve}","page":"Public API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(curve::ValueCurve) -> Any\n\n\nGet the underlying FunctionData representation of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_initial_input-Tuple{Union{AverageRateCurve, IncrementalCurve}}","page":"Public API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n curve::Union{AverageRateCurve, IncrementalCurve}\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ValueCurve (not defined for InputOutputCurve)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_input_at_zero-Tuple{ValueCurve}","page":"Public API","title":"InfrastructureSystems.get_input_at_zero","text":"get_input_at_zero(curve::ValueCurve) -> Any\n\n\nGet the input_at_zero field of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.is_convex-Tuple{ValueCurve}","page":"Public API","title":"InfrastructureSystems.is_convex","text":"is_convex(curve::ValueCurve) -> Bool\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Time-Series","page":"Public API","title":"Time Series","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [InfrastructureSystems]\nPages = [\"abstract_time_series.jl\",\n \"deterministic.jl\",\n \"deterministic_single_time_series.jl\",\n \"probabilistic.jl\",\n \"scenarios.jl\",\n \"static_time_series.jl\",\n \"single_time_series.jl\",\n \"forecasts.jl\",\n ]\nOrder = [:type, :function]\nFilter = t -> nameof(t) in names(PowerSystems)","category":"page"},{"location":"api/public/#InfrastructureSystems.TimeSeriesData","page":"Public API","title":"InfrastructureSystems.TimeSeriesData","text":"Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Deterministic","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"mutable struct Deterministic <: AbstractDeterministic\n name::String\n data::SortedDict\n resolution::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ndata::SortedDict: timestamp - scalingfactor\nresolution::Dates.Period: forecast resolution\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Dates.Period}","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{Deterministic, AbstractString}","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n src::Deterministic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\nExamples\n\nresolution = Dates.Hour(1)\ndata = Dict(\n DateTime(\"2020-01-01T00:00:00\") => ones(24),\n DateTime(\"2020-01-01T01:00:00\") => ones(24),\n)\n# Define a Deterministic for the first attribute\nforecast_max_active_power = Deterministic(\n \"max_active_power\",\n data,\n resolution,\n scaling_factor_multiplier = get_max_active_power,\n)\nadd_time_series!(sys, generator, forecast_max_active_power)\n# Reuse time series for second attribute\nforecast_max_reactive_power = Deterministic(\n forecast_max_active_power,\n \"max_reactive_power\"\n scaling_factor_multiplier = get_max_reactive_power,\n)\nadd_time_series!(sys, generator, forecast_max_reactive_power)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{Deterministic, Any}","page":"Public API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n forecast::Deterministic,\n data\n) -> Deterministic\n\n\nConstruct a new Deterministic from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Deterministic}","page":"Public API","title":"InfrastructureSystems.get_data","text":"get_data(value::Deterministic) -> DataStructures.SortedDict\n\n\nGet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Deterministic}","page":"Public API","title":"InfrastructureSystems.get_name","text":"get_name(value::Deterministic) -> String\n\n\nGet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Deterministic}","page":"Public API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Deterministic) -> Dates.Period\n\n\nGet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.iterate_windows-Tuple{Deterministic}","page":"Public API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::Deterministic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{Deterministic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Deterministic, Any}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Deterministic, val) -> Any\n\n\nSet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.DeterministicSingleTimeSeries","page":"Public API","title":"InfrastructureSystems.DeterministicSingleTimeSeries","text":"mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic\n single_time_series::SingleTimeSeries\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n horizon::Int\nend\n\nA deterministic forecast that wraps a SingleTimeSeries\n\nDeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts. \n\nCan be used as a perfect forecast based on historical data when real forecast data is unavailable. \n\nArguments\n\nsingle_time_series::SingleTimeSeries: wrapped SingleTimeSeries object\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\nhorizon::Int: length of this time series\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_horizon-Tuple{DeterministicSingleTimeSeries}","page":"Public API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.iterate_windows-Tuple{DeterministicSingleTimeSeries}","page":"Public API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::DeterministicSingleTimeSeries\n) -> Any\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic","page":"Public API","title":"InfrastructureSystems.Probabilistic","text":"mutable struct Probabilistic <: Forecast\n name::String\n resolution::Dates.Period\n percentiles::Vector{Float64}\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict, Vector, Dates.Period}","page":"Public API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Probabilistic from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}, Vector{Float64}}","page":"Public API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},\n percentiles::Vector{Float64};\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Probabilistic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Vector, Dates.Period}","page":"Public API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{Probabilistic, AbstractString}","page":"Public API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n src::Probabilistic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct a Probabilistic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Probabilistic}","page":"Public API","title":"InfrastructureSystems.get_data","text":"get_data(value::Probabilistic) -> DataStructures.SortedDict\n\n\nGet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Probabilistic}","page":"Public API","title":"InfrastructureSystems.get_name","text":"get_name(value::Probabilistic) -> String\n\n\nGet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_percentiles-Tuple{Probabilistic}","page":"Public API","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(value::Probabilistic) -> Vector{Float64}\n\n\nGet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Probabilistic}","page":"Public API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Probabilistic) -> Dates.Period\n\n\nGet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.iterate_windows-Tuple{Probabilistic}","page":"Public API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::Probabilistic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{Probabilistic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Probabilistic, Any}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Probabilistic, val) -> Any\n\n\nSet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Scenarios","page":"Public API","title":"InfrastructureSystems.Scenarios","text":"mutable struct Scenarios <: Forecast\n name::String\n resolution::Dates.Period\n scenario_count::Int64\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\nscenario_count::Int64: Number of scenarios\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict, Dates.Period}","page":"Public API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Scenarios\n\n\nConstruct Scenarios from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"Public API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> Scenarios\n\n\nConstruct Scenarios from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Scenarios-Tuple{Scenarios, AbstractString}","page":"Public API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n src::Scenarios,\n name::AbstractString;\n scaling_factor_multiplier\n) -> Scenarios\n\n\nConstruct Scenarios that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Scenarios}","page":"Public API","title":"InfrastructureSystems.get_data","text":"get_data(value::Scenarios) -> DataStructures.SortedDict\n\n\nGet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Scenarios}","page":"Public API","title":"InfrastructureSystems.get_name","text":"get_name(value::Scenarios) -> String\n\n\nGet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Scenarios}","page":"Public API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Scenarios) -> Dates.Period\n\n\nGet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scenario_count-Tuple{Scenarios}","page":"Public API","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(value::Scenarios) -> Int64\n\n\nGet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.iterate_windows-Tuple{Scenarios}","page":"Public API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::Scenarios\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{Scenarios}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Scenarios, Any}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Scenarios, val) -> Any\n\n\nSet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.StaticTimeSeries","page":"Public API","title":"InfrastructureSystems.StaticTimeSeries","text":"Supertype for static time series, which has one value per time point\n\nCurrent concrete subtypes are:\n\nSingleTimeSeries\n\nSee also: Forecast\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"mutable struct SingleTimeSeries <: StaticTimeSeries\n name::String\n data::TimeSeries.TimeArray\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA single column of time series data for a particular data field in a Component.\n\nIn contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).\n\nArguments\n\nname::String: user-defined name\ndata::TimeSeries.TimeArray: timestamp - scalingfactor\nresolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nresolution::Dates.Period: resolution of the time series\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, Union{DataFrames.DataFrame, TimeSeries.TimeArray}}","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier,\n timestamp\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a TimeArray or DataFrame.\n\nArguments\n\nname::AbstractString: user-defined name\ndata::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{SingleTimeSeries, AbstractString}","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n src::SingleTimeSeries,\n name::AbstractString;\n scaling_factor_multiplier\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attribtues.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{SingleTimeSeries, TimeSeries.TimeArray}","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n time_series::SingleTimeSeries,\n data::TimeSeries.TimeArray\n) -> Any\n\n\nCreates a new SingleTimeSeries from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{String, Dates.Period, Dates.DateTime, Int64}","page":"Public API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::String,\n resolution::Dates.Period,\n initial_time::Dates.DateTime,\n time_steps::Int64\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{SingleTimeSeries}","page":"Public API","title":"InfrastructureSystems.get_data","text":"get_data(value::SingleTimeSeries) -> TimeSeries.TimeArray\n\n\nGet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{SingleTimeSeries}","page":"Public API","title":"InfrastructureSystems.get_name","text":"get_name(value::SingleTimeSeries) -> String\n\n\nGet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{SingleTimeSeries}","page":"Public API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::SingleTimeSeries) -> Dates.Period\n\n\nGet SingleTimeSeries resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{SingleTimeSeries, Any}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(value::SingleTimeSeries, val) -> Any\n\n\nSet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Forecast","page":"Public API","title":"InfrastructureSystems.Forecast","text":"Supertype for forecast time series Current concrete subtypes are:\n\nDeterministic\nDeterministicSingleTimeSeries\nScenarios\nProbabilistic\n\nSubtypes of Forecast must implement:\n\nget_horizon_count\nget_initial_times\nget_initial_timestamp\nget_name\nget_scaling_factor_multiplier\nget_window\niterate_windows\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.get_window-Tuple{Forecast, Int64}","page":"Public API","title":"InfrastructureSystems.get_window","text":"get_window(forecast::Forecast, index::Int64; len) -> Any\n\n\nReturn the forecast window corresponsing to interval index.\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [InfrastructureSystems]\nPages = [\"time_series_cache.jl\",\n \"time_series_interface.jl\",\n \"time_series_structs.jl\",\n \"time_series_storage.jl\",\n \"time_series_parser.jl\",\n \"utils/print.jl\"]\nOrder = [:type, :function]\nFilter = t -> nameof(t) in names(PowerSystems)","category":"page"},{"location":"api/public/#InfrastructureSystems.ForecastCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:Forecast","page":"Public API","title":"InfrastructureSystems.ForecastCache","text":"Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.\n\nCall Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.\n\nArguments\n\n::Type{T}: subtype of Forecast\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: forecast name\nstart_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time\nhorizon_count::Union{Nothing, Int} = nothing: forecast horizon count\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.StaticTimeSeriesCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:StaticTimeSeries","page":"Public API","title":"InfrastructureSystems.StaticTimeSeriesCache","text":"Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.\n\nCall Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.\n\nArguments\n\n::Type{T}: subtype of StaticTimeSeries\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: time series name\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_next_time-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"Public API","title":"InfrastructureSystems.get_next_time","text":"get_next_time(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the timestamp for the next read with get_next_time_series_array!.\n\nReturn nothing if all data has been read.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_next_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"Public API","title":"InfrastructureSystems.get_next_time_series_array!","text":"get_next_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the next TimeSeries.TimeArray.\n\nReturns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.\n\nReads from storage if the data is not already in cache.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\n\nExamples\n\ncache = ForecastCache(Deterministic, component, \"max_active_power\")\nwindow1 = get_next_time_series_array!(cache)\nwindow2 = get_next_time_series_array!(cache)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.reset!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"Public API","title":"InfrastructureSystems.reset!","text":"reset!(cache::InfrastructureSystems.TimeSeriesCache)\n\n\nReset parameters in order to start reading data from the beginning with get_next_time_series_array!\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.copy_time_series!-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}}","page":"Public API","title":"InfrastructureSystems.copy_time_series!","text":"copy_time_series!(\n dst::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n src::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute};\n name_mapping,\n scaling_factor_multiplier_mapping\n)\n\n\nEfficiently add all time_series in one component to another by copying the underlying references.\n\nArguments\n\ndst::TimeSeriesOwners: Destination owner\nsrc::TimeSeriesOwners: Source owner\nname_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.\nscaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series","page":"Public API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n key::TimeSeriesKey\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n key::TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n key::TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n key::TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64},\n count::Union{Nothing, Int64}\n) -> Any\n\n\nReturn the exact stored data in a time series, using a time series key look up\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nkey::TimeSeriesKey: the time series' key\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series by name\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, AbstractString}} where T<:TimeSeriesData","page":"Public API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n ::Type{T<:TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n count,\n features...\n) -> Any\n\n\nReturn the exact stored data in a time series\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\n::Type{T}: Concrete subtype of TimeSeriesData to return\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series by key\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_array","page":"Public API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries;\n ...\n) -> Any\nget_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from a cached StaticTimeSeries instance.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_array-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, Forecast, Dates.DateTime}","page":"Public API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n forecast::Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window from a cached Forecast instance\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_array-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, AbstractString}} where T<:TimeSeriesData","page":"Public API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n ::Type{T<:TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from storage for the given time series parameters.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_keys-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}}","page":"Public API","title":"InfrastructureSystems.get_time_series_keys","text":"get_time_series_keys(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}\n) -> Vector\n\n\nReturn information about each time series array attached to the owner. This information can be used to call get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_multiple","page":"Public API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute};\n ...\n) -> Union{Tuple{}, Channel{Any}}\nget_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n filter_func;\n type,\n name\n) -> Union{Tuple{}, Channel{Any}}\n\n\nReturns an iterator of TimeSeriesData instances attached to the component or attribute.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\nowner::TimeSeriesOwners: component or attribute from which to get time_series\nfilter_func = nothing: Only return time_series for which this returns true.\ntype = nothing: Only return time_series with this type.\nname = nothing: Only return time_series matching this value.\n\nSee also: get_time_series_multiple from a System\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps","page":"Public API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n forecast::Forecast;\n ...\n)\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n forecast::Forecast,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\n\nSee also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps-2","page":"Public API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries;\n ...\n) -> Vector{D} where D<:Dates.TimeType\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached StaticTimeSeries instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\n\nSee also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, AbstractString}} where T<:TimeSeriesData","page":"Public API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n ::Type{T<:TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n features...\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from storage for the given time series parameters.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_values","page":"Public API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries;\n ...\n) -> Any\nget_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from a cached StaticTimeSeries instance\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_values-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, Forecast, Dates.DateTime}","page":"Public API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n forecast::Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_values-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, AbstractString}} where T<:TimeSeriesData","page":"Public API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n ::Type{T<:TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from storage\n\nIf the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.\n\nArguments\n\n::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.has_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}}","page":"Public API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.has_time_series-Union{Tuple{T}, Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}, Type{T}}} where T<:TimeSeriesData","page":"Public API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n val::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute},\n _::Type{T<:TimeSeriesData}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data of type T.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.ForecastKey","page":"Public API","title":"InfrastructureSystems.ForecastKey","text":"A unique key to identify and retrieve a Forecast\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.StaticTimeSeriesKey","page":"Public API","title":"InfrastructureSystems.StaticTimeSeriesKey","text":"A unique key to identify and retrieve a StaticTimeSeries\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.TimeSeriesAssociation","page":"Public API","title":"InfrastructureSystems.TimeSeriesAssociation","text":"Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.\n\nExamples\n\nassociation1 = TimeSeriesAssociation(component, time_series)\nassociation2 = TimeSeriesAssociation(component, time_series, scenario = \"high\")\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.TimeSeriesCounts","page":"Public API","title":"InfrastructureSystems.TimeSeriesCounts","text":"Provides counts of time series including attachments to components and supplemental attributes.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.TimeSeriesKey","page":"Public API","title":"InfrastructureSystems.TimeSeriesKey","text":"Supertype for keys that can be used to access a desired time series dataset\n\nConcrete subtypes:\n\nStaticTimeSeriesKey\nForecastKey\n\nRequired methods:\n\nget_name\nget_time_series_type\n\nThe default methods rely on the field names name and time_series_type.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.CompressionSettings","page":"Public API","title":"InfrastructureSystems.CompressionSettings","text":"CompressionSettings(enabled, type, level, shuffle)\n\nProvides customization of HDF5 compression settings.\n\nenabled::Bool: Controls whether compression is enabled.\ntype::CompressionTypes: Specifies the type of compression to use.\nlevel::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.\nshuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.\n\nRefer to the HDF5.jl and HDF5 documentation for more details on the options.\n\nExample\n\nsettings = CompressionSettings(\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true,\n)\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.show_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}}","page":"Public API","title":"InfrastructureSystems.show_time_series","text":"show_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, SupplementalAttribute}\n)\n\n\nShow a table with time series data attached to the component.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#System","page":"Public API","title":"System","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"base.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∈ [System]","category":"page"},{"location":"api/public/#PowerSystems.System","page":"Public API","title":"PowerSystems.System","text":"A power system\n\nSystem is the main data container in PowerSystems.jl, including basic metadata (base power, frequency), components (network topology, loads, generators, and services), and time series data.\n\nSystem(base_power)\nSystem(base_power, buses, components...)\nSystem(base_power, buses, generators, loads, branches, storage, services; kwargs...)\nSystem(base_power, buses, generators, loads; kwargs...)\nSystem(file; kwargs...)\nSystem(; buses, generators, loads, branches, storage, base_power, services, kwargs...)\nSystem(; kwargs...)\n\nArguments\n\nbase_power::Float64: the base power value for the system\nbuses::Vector{ACBus}: an array of buses\ncomponents...: Each element (e.g., buses, generators, ...) must be an iterable containing subtypes of Component.\n\nKeyword arguments\n\next::Dict: Contains user-defined parameters. Should only contain standard types.\nfrequency::Float64: (default = 60.0) Operating frequency (Hz)\nrunchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.\ntime_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.\ntime_series_directory::Union{Nothing, String}: Directory for the time series HDF5 file. Defaults to the tmp file system\nenable_compression::Bool=false: Enable compression of time series data in HDF5.\ncompression::CompressionSettings: Allows customization of HDF5 compression settings.\nconfig_path::String: specify path to validation config file\nunit_system::String: (Default = \"SYSTEM_BASE\") Set the unit system for per-unitization while getting and setting data (\"SYSTEM_BASE\", \"DEVICE_BASE\", or \"NATURAL_UNITS\")\n\nBy default, time series data is stored in an HDF5 file in the tmp file system to prevent large datasets from overwhelming system memory (see Data Storage). If the system's time series data will be larger than the amount of tmp space available, use the time_series_directory parameter to change its location. You can also override the location by setting the environment variable SIENNA_TIME_SERIES_DIRECTORY to another directory.\n\nHDF5 compression is not enabled by default, but you can enable it with enable_compression to get significant storage savings at the cost of CPU time. CompressionSettings can be used to customize the HDF5 compression.\n\nIf you know that your dataset will fit in your computer's memory, then you can increase performance by storing it in memory with time_series_in_memory.\n\nExamples\n\nsys = System(100.0; enable_compression = true)\nsys = System(100.0; compression = CompressionSettings(\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true)\n)\nsys = System(100.0; time_series_in_memory = true)\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.System-Tuple{AbstractString, AbstractString}","page":"Public API","title":"PowerSystems.System","text":"System(\n sys_file::AbstractString,\n dyr_file::AbstractString;\n kwargs...\n) -> Any\n\n\nParse static and dynamic data directly from PSS/e text files. Automatically generates all the relationships between the available dynamic injection models and the static counterpart\n\nEach dictionary indexed by id contains a vector with 5 of its components:\n\nMachine\nShaft\nAVR\nTurbineGov\nPSS\n\nFiles must be parsed from a .raw file (PTI data format) and a .dyr file.\n\nExamples:\n\nraw_file = \"Example.raw\"\ndyr_file = \"Example.dyr\"\nsys = System(raw_file, dyr_file)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{AbstractString}","page":"Public API","title":"PowerSystems.System","text":"System(\n file_path::AbstractString;\n assign_new_uuids,\n kwargs...\n) -> Any\n\n\nConstructs a System from a file path ending with .m, .RAW, or .json\n\nIf the file is JSON then assignnewuuids = true will generate new UUIDs for the system and all components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Any, Number}","page":"Public API","title":"PowerSystems.System","text":"System(\n data,\n base_power::Number;\n internal,\n kwargs...\n) -> System\n\n\nConstruct a System from InfrastructureSystems.SystemData\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Float64, Vector{ACBus}, Vararg{Any}}","page":"Public API","title":"PowerSystems.System","text":"System(\n base_power::Float64,\n buses::Vector{ACBus},\n components...;\n kwargs...\n) -> System\n\n\nSystem constructor when components are constructed externally.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Nothing}","page":"Public API","title":"PowerSystems.System","text":"System(\n ::Nothing;\n buses,\n generators,\n loads,\n branches,\n storage,\n base_power,\n services,\n kwargs...\n) -> System\n\n\nConstructs a non-functional System for demo purposes.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Number}","page":"Public API","title":"PowerSystems.System","text":"System(base_power::Number; kwargs...) -> System\n\n\nConstruct an empty System. Useful for building a System while parsing raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"base.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∉ [System]","category":"page"},{"location":"api/public/#InfrastructureSystems.from_json-Tuple{Union{IO, String}, Type{System}}","page":"Public API","title":"InfrastructureSystems.from_json","text":"from_json(\n io::Union{IO, String},\n ::Type{System};\n runchecks,\n assign_new_uuids,\n kwargs...\n) -> System\n\n\nIf assignnewuuids = true, generate new UUIDs for the system and all components.\n\nWarning: time series data is not restored by this method. If that is needed, use the normal process to construct the system from a serialized JSON file instead, such as with System(\"sys.json\").\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{System}","page":"Public API","title":"InfrastructureSystems.get_name","text":"get_name(sys::System) -> Union{Nothing, String}\n\n\nGet the name of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_supplemental_attribute-Tuple{System, Base.UUID}","page":"Public API","title":"InfrastructureSystems.get_supplemental_attribute","text":"get_supplemental_attribute(\n sys::System,\n uuid::Base.UUID\n) -> SupplementalAttribute\n\n\nReturn the supplemental attribute with the given uuid.\n\nThrows ArgumentError if the attribute is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_supplemental_attributes-Union{Tuple{T}, Tuple{Function, Type{T}, System}} where T<:SupplementalAttribute","page":"Public API","title":"InfrastructureSystems.get_supplemental_attributes","text":"get_supplemental_attributes(\n filter_func::Function,\n _::Type{T<:SupplementalAttribute},\n sys::System\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:SupplementalAttribute, I<:(Vector)}\n\n\nReturns an iterator of supplemental attributes. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nExamples\n\niter = get_supplemental_attributes(GeometricDistributionForcedOutage, sys)\niter = get_supplemental_attributes(Outage, sys)\niter = get_supplemental_attributes(x -> get_mean_time_to_recovery(x) == >= 0.5, GeometricDistributionForcedOutage, sys)\noutages = get_supplemental_attributes(GeometricDistributionForcedOutage, sys) do outage\n get_mean_time_to_recovery(x) == >= 0.5\nend\noutages = collect(get_supplemental_attributes(GeometricDistributionForcedOutage, sys))\n\nSee also: iterate_supplemental_attributes\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_multiple-2","page":"Public API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(sys::System; ...) -> Channel{Any}\nget_time_series_multiple(\n sys::System,\n filter_func;\n type,\n name\n) -> Channel{Any}\n\n\nReturn an iterator of time series in order of initial time.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\ndata::SystemData: system\nfilter_func = nothing: Only return time series for which this returns true.\ntype = nothing: Only return time series with this type.\nname = nothing: Only return time series matching this value.\n\nExamples\n\nfor time_series in get_time_series_multiple(sys)\n @show time_series\nend\n\nts = collect(get_time_series_multiple(sys; type = SingleTimeSeries))\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Component, AbstractString}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n component::Component,\n name::AbstractString\n) -> AbstractString\n\n\nSet the name of a component.\n\nThrows an exception if the component is attached to a system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{System, AbstractString}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n sys::System,\n name::AbstractString\n) -> AbstractString\n\n\nSet the name of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{System, Component, AbstractString}","page":"Public API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n sys::System,\n component::Component,\n name::AbstractString\n)\n\n\nSet the name for a component that is attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.to_json-Tuple{System, AbstractString}","page":"Public API","title":"InfrastructureSystems.to_json","text":"to_json(\n sys::System,\n filename::AbstractString;\n user_data,\n pretty,\n force,\n runchecks\n)\n\n\nSerializes a system to a JSON file and saves time series to an HDF5 file.\n\nArguments\n\nsys::System: system\nfilename::AbstractString: filename to write\n\nKeyword arguments\n\nuser_data::Union{Nothing, Dict} = nothing: optional metadata to record\npretty::Bool = false: whether to pretty-print the JSON\nforce::Bool = false: whether to overwrite existing files\ncheck::Bool = false: whether to run system validation checks\n\nRefer to check_component for exceptions thrown if check = true.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_component!-Tuple{System, DynamicInjection, StaticInjection}","page":"Public API","title":"PowerSystems.add_component!","text":"add_component!(\n sys::System,\n dyn_injector::DynamicInjection,\n static_injector::StaticInjection;\n kwargs...\n)\n\n\nAdd a dynamic injector to the system.\n\nA component cannot be added to more than one System. Throws ArgumentError if the name does not match the static_injector name. Throws ArgumentError if the static_injector is not attached to the system.\n\nAll rules for the generic add_component! method also apply.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_component!-Union{Tuple{T}, Tuple{System, T}} where T<:Component","page":"Public API","title":"PowerSystems.add_component!","text":"add_component!(\n sys::System,\n component::Component;\n skip_validation,\n kwargs...\n)\n\n\nAdd a component to the system.\n\nA component cannot be added to more than one System. Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.\n\nExamples\n\nsys = System(100.0)\n\n# Add a single component.\nadd_component!(sys, bus)\n\n# Add many at once.\nbuses = [bus1, bus2, bus3]\ngenerators = [gen1, gen2, gen3]\nforeach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))\n\nSee also add_components!.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_components!-Tuple{System, Any}","page":"Public API","title":"PowerSystems.add_components!","text":"add_components!(sys::System, components)\n\n\nAdd many components to the system at once.\n\nA component cannot be added to more than one System. Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.\n\nExamples\n\nsys = System(100.0)\n\nbuses = [bus1, bus2, bus3]\ngenerators = [gen1, gen2, gen3]\nadd_components!(sys, Iterators.flatten((buses, generators))\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{Device, Service, System}","page":"Public API","title":"PowerSystems.add_service!","text":"add_service!(device::Device, service::Service, sys::System)\n\n\nSimilar to add_service! but for Service and Device already stored in the system. Performs validation checks on the device and the system\n\nArguments\n\ndevice::Device: Device\nservice::Service: Service\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, ConstantReserveGroup, Vector{<:Service}}","page":"Public API","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::ConstantReserveGroup,\n contributing_services::Vector{<:Service};\n skip_validation,\n kwargs...\n)\n\n\nSimilar to add_component! but for ConstantReserveGroup.\n\nArguments\n\nsys::System: system\nservice::ConstantReserveGroup: service to add\ncontributing_services: contributing services to the group\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, ConstantReserveGroup}","page":"Public API","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::ConstantReserveGroup;\n skip_validation,\n kwargs...\n)\n\n\nSimilar to add_component! but for ConstantReserveGroup.\n\nArguments\n\nsys::System: system\nservice::ConstantReserveGroup: service to add\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, Service, Any}","page":"Public API","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::Service,\n contributing_devices;\n kwargs...\n)\n\n\nSimilar to add_component! but for services.\n\nArguments\n\nsys::System: system\nservice::Service: service to add\ncontributing_devices: Must be an iterable of type Device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, Service, Device}","page":"Public API","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::Service,\n contributing_device::Device;\n kwargs...\n)\n\n\nSimilar to add_component! but for services.\n\nArguments\n\nsys::System: system\nservice::Service: service to add\ncontributing_device::Device: Valid Device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_supplemental_attribute!-Tuple{System, Component, SupplementalAttribute}","page":"Public API","title":"PowerSystems.add_supplemental_attribute!","text":"add_supplemental_attribute!(\n sys::System,\n component::Component,\n attribute::SupplementalAttribute\n)\n\n\nAdd a supplemental attribute to the component. The attribute may already be attached to a different component.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n metadata_file::AbstractString;\n resolution\n) -> Vector{TimeSeriesKey}\n\n\nAdd time series data from a metadata file or metadata descriptors.\n\nArguments\n\nsys::System: system\nmetadata_file::AbstractString: metadata file for timeseries that includes an array of IS.TimeSeriesFileMetadata instances or a vector.\nresolution::DateTime.Period=nothing: skip time series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Any, TimeSeriesData}","page":"Public API","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n components,\n time_series::TimeSeriesData;\n features...\n) -> TimeSeriesKey\n\n\nAdd the same time series data to multiple components.\n\nThis function stores a single copy of the data. Each component will store a reference to that data. This is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.\n\nThrows ArgumentError if a component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Component, TimeSeriesData}","page":"Public API","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n component::Component,\n time_series::TimeSeriesData;\n features...\n) -> TimeSeriesKey\n\n\nAdd time series data to a component.\n\nThrows ArgumentError if the component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Vector{InfrastructureSystems.TimeSeriesFileMetadata}}","page":"Public API","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};\n resolution\n) -> Vector{TimeSeriesKey}\n\n\nAdd time series data from a metadata file or metadata descriptors.\n\nArguments\n\nsys::System: system\ntimeseries_metadata::Vector{IS.TimeSeriesFileMetadata}: metadata for timeseries\nresolution::DateTime.Period=nothing: skip time series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.bulk_add_time_series!-Tuple{System, Any}","page":"Public API","title":"PowerSystems.bulk_add_time_series!","text":"bulk_add_time_series!(\n sys::System,\n associations;\n batch_size\n) -> Vector{TimeSeriesKey}\n\n\nAdd many time series in bulk\n\nThis method is advantageous when adding thousands of time series arrays because of the overhead in writing the time series to the underlying storage.\n\nArguments\n\nsys::System: system\nassociations: Iterable of TimeSeriesAssociation instances. Using a Vector is not recommended. Pass a Generator or Iterator to avoid loading all time series data into system memory at once.\nbatch_size::Int: (Default = 100) Number of time series to add per batch.\n\nExamples\n\n# Assumes `read_time_series` will return data appropriate for Deterministic forecasts\n# based on the generator name and the filenames match the component and time series names.\nresolution = Dates.Hour(1)\nassociations = (\n IS.TimeSeriesAssociation(\n gen,\n Deterministic(\n data = read_time_series(get_name(gen) * \".csv\"),\n name = \"get_max_active_power\",\n resolution=resolution),\n )\n for gen in get_components(ThermalStandard, sys)\n)\nbulk_add_time_series!(sys, associations)\n\nSee also: open_time_series_store! to minimize HDF5 file handle overhead if you must add time series arrays one at a time\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check-Tuple{System}","page":"Public API","title":"PowerSystems.check","text":"check(sys::System)\n\n\nCheck system consistency and validity.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_component-Tuple{System, Component}","page":"Public API","title":"PowerSystems.check_component","text":"check_component(sys::System, component::Component)\n\n\nCheck the values of a component.\n\nThrows InvalidValue if any of the component's field values are outside of defined valid range or if the custom validate method for the type fails its check.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Tuple{System, Any}","page":"Public API","title":"PowerSystems.check_components","text":"check_components(sys::System, components)\n\n\nCheck the values of each component in an iterable of components. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Tuple{System}","page":"Public API","title":"PowerSystems.check_components","text":"check_components(sys::System; check_masked_components)\n\n\nCheck the values of all components. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:Component","page":"Public API","title":"PowerSystems.check_components","text":"check_components(\n sys::System,\n ::Type{T<:Component};\n check_masked_components\n)\n\n\nCheck the values of components of a given abstract or concrete type. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_time_series_consistency-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:TimeSeriesData","page":"Public API","title":"PowerSystems.check_time_series_consistency","text":"check_time_series_consistency(\n sys::System,\n _::Type{T<:TimeSeriesData}\n) -> Union{Nothing, Tuple{Any, Any}}\n\n\nChecks time series in the system for inconsistencies.\n\nFor SingleTimeSeries, returns a Tuple of initial_timestamp and length.\n\nThis is a no-op for subtypes of Forecast because those are already guaranteed to be consistent.\n\nThrows InfrastructureSystems.InvalidValue if any time series is inconsistent.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_components!-Tuple{System}","page":"Public API","title":"PowerSystems.clear_components!","text":"clear_components!(sys::System)\n\n\nRemove all components from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_ext!-Tuple{System}","page":"Public API","title":"PowerSystems.clear_ext!","text":"clear_ext!(sys::System)\n\n\nClear any value stored in ext.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_time_series!-Tuple{System}","page":"Public API","title":"PowerSystems.clear_time_series!","text":"clear_time_series!(sys::System)\n\n\nClear all time series data from the system.\n\nIf you are storing time series data in an HDF5 file, this will will delete the HDF5 file and create a new one.\n\nSee also: remove_time_series!\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, Line, Type{MonitoredLine}}","page":"Public API","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n line::Line,\n linetype::Type{MonitoredLine};\n kwargs...\n)\n\n\nConverts a Line component to a MonitoredLine component and replaces the original in the system\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, MonitoredLine, Type{Line}}","page":"Public API","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n line::MonitoredLine,\n linetype::Type{Line};\n kwargs...\n)\n\n\nConverts a MonitoredLine component to a Line component and replaces the original in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, PowerLoad, Type{StandardLoad}}","page":"Public API","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n old_load::PowerLoad,\n new_type::Type{StandardLoad};\n kwargs...\n)\n\n\nConverts a PowerLoad component to a StandardLoad component and replaces the original in the system. Does not set any fields in StandardLoad that lack a PowerLoad equivalent.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.filter_components_by_subsystem!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.filter_components_by_subsystem!","text":"filter_components_by_subsystem!(\n sys::System,\n subsystem::AbstractString;\n runchecks\n)\n\n\nFilter out all components that are not part of the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.from_subsystem-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.from_subsystem","text":"from_subsystem(\n sys::System,\n subsystem::AbstractString;\n runchecks\n) -> System\n\n\nConstruct a System from a subsystem of an existing system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_aggregation_topology_mapping-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:AggregationTopology","page":"Public API","title":"PowerSystems.get_aggregation_topology_mapping","text":"get_aggregation_topology_mapping(\n _::Type{T<:AggregationTopology},\n sys::System\n) -> Dict{String, Vector{ACBus}}\n\n\nReturn a mapping of AggregationTopology name to vector of buses within it.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_available_components-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:Component","page":"Public API","title":"PowerSystems.get_available_components","text":"get_available_components(\n _::Type{T<:Component},\n sys::System\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}\n\n\nGets components availability. Requires type T to have the method get_available implemented.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_base_power-Tuple{System}","page":"Public API","title":"PowerSystems.get_base_power","text":"get_base_power(sys::System) -> Float64\n\n\nReturn the system's base power.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.get_bus","text":"get_bus(\n sys::System,\n name::AbstractString\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nReturn bus with name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus-Tuple{System, Int64}","page":"Public API","title":"PowerSystems.get_bus","text":"get_bus(sys::System, bus_number::Int64) -> Any\n\n\nReturn bus with bus_number.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus_numbers-Tuple{System}","page":"Public API","title":"PowerSystems.get_bus_numbers","text":"get_bus_numbers(sys::System) -> Vector{Int64}\n\n\nReturn a sorted vector of bus numbers in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_buses-Tuple{System, AggregationTopology}","page":"Public API","title":"PowerSystems.get_buses","text":"get_buses(\n sys::System,\n aggregator::AggregationTopology\n) -> Vector{ACBus}\n\n\nReturn a vector of buses contained within the AggregationTopology.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_buses-Tuple{System, Set{Int64}}","page":"Public API","title":"PowerSystems.get_buses","text":"get_buses(\n sys::System,\n bus_numbers::Set{Int64}\n) -> Vector{ACBus}\n\n\nReturn all buses values with bus_numbers.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_component-Tuple{System, Base.UUID}","page":"Public API","title":"PowerSystems.get_component","text":"get_component(\n sys::System,\n uuid::Base.UUID\n) -> InfrastructureSystems.InfrastructureSystemsComponent\n\n\nGet the component by UUID.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_component-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API","title":"PowerSystems.get_component","text":"get_component(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nGet the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.\n\nSee get_components_by_name for abstract types with non-unique names across subtypes.\n\nThrows ArgumentError if T is not a concrete type and there is more than one component with requested name\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components-Tuple{System, SupplementalAttribute}","page":"Public API","title":"PowerSystems.get_components","text":"get_components(\n sys::System,\n attribute::SupplementalAttribute\n) -> Any\n\n\nReturn a vector of components that are attached to the supplemental attribute.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:Component","page":"Public API","title":"PowerSystems.get_components","text":"get_components(\n ::Type{T<:Component},\n sys::System;\n subsystem_name\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}\n\n\nReturns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nExamples\n\niter = PowerSystems.get_components(ThermalStandard, sys)\niter = PowerSystems.get_components(Generator, sys)\niter = PowerSystems.get_components(x -> PowerSystems.get_available(x), Generator, sys)\nthermal_gens = get_components(ThermalStandard, sys) do gen\n get_available(gen)\nend\ngenerators = collect(PowerSystems.get_components(Generator, sys))\n\n\nSee also: iterate_components\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components_by_name-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API","title":"PowerSystems.get_components_by_name","text":"get_components_by_name(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n) -> Vector{T} where T<:InfrastructureSystems.InfrastructureSystemsComponent\n\n\nGet the components of abstract type T with name. Note that PowerSystems enforces unique names on each concrete type but not across concrete types.\n\nSee get_component if the concrete type is known.\n\nThrows ArgumentError if T is not an abstract type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components_in_aggregation_topology-Union{Tuple{T}, Tuple{Type{T}, System, AggregationTopology}} where T<:StaticInjection","page":"Public API","title":"PowerSystems.get_components_in_aggregation_topology","text":"get_components_in_aggregation_topology(\n _::Type{T<:StaticInjection},\n sys::System,\n aggregator::AggregationTopology\n) -> Vector{T} where T<:StaticInjection\n\n\nReturn a vector of components with buses in the AggregationTopology.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_compression_settings-Tuple{System}","page":"Public API","title":"PowerSystems.get_compression_settings","text":"get_compression_settings(sys::System) -> CompressionSettings\n\n\nReturn the compression settings used for system data such as time series arrays.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_contributing_device_mapping-Tuple{System}","page":"Public API","title":"PowerSystems.get_contributing_device_mapping","text":"get_contributing_device_mapping(\n sys::System\n) -> Dict{@NamedTuple{type::DataType, name::String}, ServiceContributingDevices}\n\n\nReturn an instance of ServiceContributingDevicesMapping.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_contributing_devices-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Public API","title":"PowerSystems.get_contributing_devices","text":"get_contributing_devices(\n sys::System,\n service::Service\n) -> Vector\n\n\nReturn a vector of devices contributing to the service.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_description-Tuple{System}","page":"Public API","title":"PowerSystems.get_description","text":"get_description(sys::System) -> Union{Nothing, String}\n\n\nGet the description of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_existing_component_types-Tuple{System}","page":"Public API","title":"PowerSystems.get_existing_component_types","text":"get_existing_component_types(\n sys::System\n) -> Vector{DataType}\n\n\nReturn all the component types in the system. It does not return masked components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_existing_device_types-Tuple{System}","page":"Public API","title":"PowerSystems.get_existing_device_types","text":"get_existing_device_types(sys::System) -> Vector{DataType}\n\n\nReturn all the device types in the system. It does not return component types or masked components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_ext-Tuple{System}","page":"Public API","title":"PowerSystems.get_ext","text":"get_ext(sys::System) -> Union{Nothing, Dict{String, Any}}\n\n\nReturn a user-modifiable dictionary to store extra information.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_horizon-Tuple{System}","page":"Public API","title":"PowerSystems.get_forecast_horizon","text":"get_forecast_horizon(sys::System) -> Any\n\n\nReturn the horizon for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_initial_times-Tuple{System}","page":"Public API","title":"PowerSystems.get_forecast_initial_times","text":"get_forecast_initial_times(sys::System) -> Any\n\n\nReturn the initial times for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_initial_timestamp-Tuple{System}","page":"Public API","title":"PowerSystems.get_forecast_initial_timestamp","text":"get_forecast_initial_timestamp(sys::System) -> Any\n\n\nReturn the initial_timestamp for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_interval-Tuple{System}","page":"Public API","title":"PowerSystems.get_forecast_interval","text":"get_forecast_interval(sys::System) -> Any\n\n\nReturn the interval for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_window_count-Tuple{System}","page":"Public API","title":"PowerSystems.get_forecast_window_count","text":"get_forecast_window_count(sys::System) -> Any\n\n\nReturn the window count for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_frequency-Tuple{System}","page":"Public API","title":"PowerSystems.get_frequency","text":"get_frequency(sys::System) -> Float64\n\n\nReturn the system's frequency.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_runchecks-Tuple{System}","page":"Public API","title":"PowerSystems.get_runchecks","text":"get_runchecks(sys::System) -> Bool\n\n\nReturn true if checks are enabled on the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_time_series_counts-Tuple{System}","page":"Public API","title":"PowerSystems.get_time_series_counts","text":"get_time_series_counts(sys::System) -> TimeSeriesCounts\n\n\nReturns counts of time series including attachments to components and supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_time_series_resolutions-Tuple{System}","page":"Public API","title":"PowerSystems.get_time_series_resolutions","text":"get_time_series_resolutions(\n sys::System;\n time_series_type\n) -> Any\n\n\nReturn a sorted Vector of distinct resolutions for all time series of the given type (or all types).\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_units_base-Tuple{System}","page":"Public API","title":"PowerSystems.get_units_base","text":"get_units_base(system::System) -> String\n\n\nGet the system's unit base)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_component-Tuple{System, Type{<:Component}, AbstractString}","page":"Public API","title":"PowerSystems.has_component","text":"has_component(\n sys::System,\n T::Type{<:Component},\n name::AbstractString\n) -> Bool\n\n\nCheck to see if the component of type T with name exists.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_component-Tuple{System, Type{<:Component}}","page":"Public API","title":"PowerSystems.has_component","text":"has_component(sys::System, T::Type{<:Component})\n\n\nCheck to see if the component of type T exists.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.is_component_in_aggregation_topology-Union{Tuple{T}, Tuple{Component, T}} where T<:AggregationTopology","page":"Public API","title":"PowerSystems.is_component_in_aggregation_topology","text":"is_component_in_aggregation_topology(\n comp::Component,\n aggregator::AggregationTopology\n) -> Union{Missing, Bool}\n\n\nReturn whether the given component's bus is in the AggregationTopology.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.iterate_components-Tuple{System}","page":"Public API","title":"PowerSystems.iterate_components","text":"iterate_components(\n sys::System\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all components.\n\nExamples\n\nfor component in iterate_components(sys)\n @show component\nend\n\nSee also: get_components\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.iterate_supplemental_attributes-Tuple{System}","page":"Public API","title":"PowerSystems.iterate_supplemental_attributes","text":"iterate_supplemental_attributes(\n sys::System\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{Base.UUID, <:SupplementalAttribute}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all supplemental_attributes.\n\nExamples\n\nfor supplemental_attribute in iterate_supplemental_attributes(sys)\n @show supplemental_attribute\nend\n\nSee also: get_supplemental_attributes\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.open_time_series_store!","page":"Public API","title":"PowerSystems.open_time_series_store!","text":"open_time_series_store!(\n func::Function,\n sys::System;\n ...\n) -> Any\nopen_time_series_store!(\n func::Function,\n sys::System,\n mode,\n args...;\n kwargs...\n) -> Any\n\n\nOpen the time series store for bulk additions or reads\n\nThis is recommended before calling add_time_series! many times because of the overhead associated with opening and closing an HDF5 file.\n\nThis is not necessary for an in-memory time series store.\n\nExamples\n\n# Assume there is a system with an array of Components and SingleTimeSeries\n# stored in the variables components and single_time_series, respectively\nopen_time_series_store!(sys, \"r+\") do\n for (component, ts) in zip(components, single_time_series)\n add_time_series!(sys, component, ts)\n end\nend\n\nYou can also use this function to make reads faster. Change the mode from \"r+\" to \"r\" to open the file read-only.\n\nSee also: bulk_add_time_series!\n\n\n\n\n\n","category":"function"},{"location":"api/public/#PowerSystems.remove_component!-Union{Tuple{T}, Tuple{System, T}} where T<:Component","page":"Public API","title":"PowerSystems.remove_component!","text":"remove_component!(sys::System, component::Component)\n\n\nRemove a component from the system by its value.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_component!-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API","title":"PowerSystems.remove_component!","text":"remove_component!(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n)\n\n\nRemove a component from the system by its name.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_supplemental_attribute!-Tuple{System, Component, SupplementalAttribute}","page":"Public API","title":"PowerSystems.remove_supplemental_attribute!","text":"remove_supplemental_attribute!(\n sys::System,\n component::Component,\n attribute::SupplementalAttribute\n)\n\n\nRemove the supplemental attribute from the component. The attribute will be removed from the system if it is not attached to any other component.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_supplemental_attribute!-Tuple{System, SupplementalAttribute}","page":"Public API","title":"PowerSystems.remove_supplemental_attribute!","text":"remove_supplemental_attribute!(\n sys::System,\n attribute::SupplementalAttribute\n)\n\n\nRemove the supplemental attribute from the system and all attached components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_supplemental_attributes!-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:SupplementalAttribute","page":"Public API","title":"PowerSystems.remove_supplemental_attributes!","text":"remove_supplemental_attributes!(\n _::Type{T<:SupplementalAttribute},\n sys::System\n)\n\n\nRemove all supplemental attributes with the given type from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_time_series!-Union{Tuple{T}, Tuple{System, Type{T}, Component, String}} where T<:TimeSeriesData","page":"Public API","title":"PowerSystems.remove_time_series!","text":"remove_time_series!(\n sys::System,\n _::Type{T<:TimeSeriesData},\n component::Component,\n name::String\n)\n\n\nRemove the time series data for a component and time series type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_time_series!-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:TimeSeriesData","page":"Public API","title":"PowerSystems.remove_time_series!","text":"remove_time_series!(sys::System, _::Type{T<:TimeSeriesData})\n\n\nRemove all the time series data for a time series type.\n\nSee also: clear_time_series!\n\nIf you are storing time series data in an HDF5 file, remove_time_series! does not actually free up file space (HDF5 behavior). If you want to remove all or most time series instances then consider using clear_time_series!. It will delete the HDF5 file and create a new one. PowerSystems has plans to automate this type of workflow.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.sanitize_component!-Tuple{Component, System}","page":"Public API","title":"PowerSystems.sanitize_component!","text":"sanitize_component!(component::Component, sys::System)\n\n\nSanitize component values.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_contributing_services!-Tuple{System, ConstantReserveGroup, Vector{<:Service}}","page":"Public API","title":"PowerSystems.set_contributing_services!","text":"set_contributing_services!(\n sys::System,\n service::ConstantReserveGroup,\n val::Vector{<:Service}\n)\n\n\nSet ConstantReserveGroup contributing_services with check\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_description!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.set_description!","text":"set_description!(\n sys::System,\n description::AbstractString\n) -> AbstractString\n\n\nSet the description of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_runchecks!-Tuple{System, Bool}","page":"Public API","title":"PowerSystems.set_runchecks!","text":"set_runchecks!(sys::System, value::Bool)\n\n\nEnable or disable system checks. Applies to component addition as well as overall system consistency.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_units_base_system!-Tuple{System, String}","page":"Public API","title":"PowerSystems.set_units_base_system!","text":"set_units_base_system!(system::System, settings::String)\n\n\nSets the units base for the getter functions on the devices. It modifies the behavior of all getter functions\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.transform_single_time_series!-Tuple{System, Dates.Period, Dates.Period}","page":"Public API","title":"PowerSystems.transform_single_time_series!","text":"transform_single_time_series!(\n sys::System,\n horizon::Dates.Period,\n interval::Dates.Period\n)\n\n\nTransform all instances of SingleTimeSeries in a System to DeterministicSingleTimeSeries\n\nThis can be used to generate a perfect forecast from historical measurements or realizations when actual forecasts are unavailable, without unnecessarily duplicating data.\n\nIf all SingleTimeSeries instances cannot be transformed then none will be.\n\nAny existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.\n\nArguments\n\nsys::System: System containing the components.\nhorizon::Dates.Period: desired horizon of each forecast window\ninterval::Dates.Period: desired interval between forecast windows\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.validate_component-Tuple{Component}","page":"Public API","title":"PowerSystems.validate_component","text":"validate_component(component::Component) -> Bool\n\n\nValidate the component fields using only those fields. Refer to validate_component_with_system to use other System data for the validation.\n\nReturn true if the instance is valid.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.validate_component_with_system-Tuple{Component, System}","page":"Public API","title":"PowerSystems.validate_component_with_system","text":"validate_component_with_system(\n component::Component,\n sys::System\n) -> Bool\n\n\nValidate a component against System data. Return true if the instance is valid.\n\nRefer to validate_component if the validation logic only requires data contained within the instance.\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"utils/print.jl\",\n \"utils/generate_struct_files.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∉ [System]","category":"page"},{"location":"api/public/#InfrastructureSystems.show_time_series-Tuple{System}","page":"Public API","title":"InfrastructureSystems.show_time_series","text":"show_time_series(sys::System)\n\n\nShow a table with the summary of time series attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.show_components","page":"Public API","title":"PowerSystems.show_components","text":"show_components(\n sys::System,\n component_type::Type{<:Component};\n ...\n)\nshow_components(\n sys::System,\n component_type::Type{<:Component},\n additional_columns::Union{Dict, Vector};\n kwargs...\n)\n\n\nShow all components of the given type in a table.\n\nArguments\n\nsys::System: System containing the components.\ncomponent_type::Type{<:Component}: Type to display. Must be a concrete type.\nadditional_columns::Union{Dict, Vector}: Additional columns to display. The Dict option is a mapping of column name to function. The function must accept a component. The Vector option is an array of field names for the component_type.\n\nExtra keyword arguments are forwarded to PrettyTables.pretty_table.\n\nExamples\n\nshow_components(sys, ThermalStandard)\nshow_components(sys, ThermalStandard, Dict(\"has_time_series\" => x -> has_time_series(x)))\nshow_components(sys, ThermalStandard, [:active_power, :reactive_power])\n\n\n\n\n\n","category":"function"},{"location":"api/public/#PowerSystems.generate_struct_file-Tuple{StructDefinition}","page":"Public API","title":"PowerSystems.generate_struct_file","text":"generate_struct_file(\n definition::StructDefinition;\n filename,\n output_directory\n)\n\n\nGenerate a Julia source code file for one struct from a StructDefinition.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinition::StructDefinition: Defines the struct and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/models/generated\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.generate_struct_files-Tuple{Any}","page":"Public API","title":"PowerSystems.generate_struct_files","text":"generate_struct_files(\n definitions;\n filename,\n output_directory\n)\n\n\nGenerate Julia source code files for multiple structs from a iterable of StructDefinition instances.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinitions: Defines the structs and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/models/generated\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Additional-Component-Methods","page":"Public API","title":"Additional Component Methods","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"supplemental_accessors.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.get_max_active_power-Tuple{T} where T<:Device","page":"Public API","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(d::Device) -> Any\n\n\nReturn the max active power for a device from getactivepower_limits.max\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{RenewableDispatch}","page":"Public API","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::RenewableDispatch) -> Any\n\n\nReturn the max reactive power for the Renewable Generation calculated as the rating * powerfactor if reactivepower_limits is nothing\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{T} where T<:Device","page":"Public API","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::Device) -> Any\n\n\nReturn the max reactive power for a device from getreactivepower_limits.max\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Parsing","page":"Public API","title":"Parsing","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"parsers/power_system_table_data.jl\",\n \"parsers/power_models_data.jl\",\n \"parsers/TAMU_data.jl\",\n \"parsers/psse_dynamic_data.jl\",\n \"parsers/pm_io/common.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∉ [System]","category":"page"},{"location":"api/public/#PowerSystems.PowerSystemTableData-Tuple{AbstractString, Float64, AbstractString}","page":"Public API","title":"PowerSystems.PowerSystemTableData","text":"PowerSystemTableData(\n directory::AbstractString,\n base_power::Float64,\n user_descriptor_file::AbstractString;\n descriptor_file,\n generator_mapping_file,\n timeseries_metadata_file\n) -> PowerSystemTableData\n\n\nReads in all the data stored in csv files The general format for data is folder: gen.csv branch.csv bus.csv .. load.csv\n\nArguments\n\ndirectory::AbstractString: directory containing CSV files\nbase_power::Float64: base power for System\nuser_descriptor_file::AbstractString: customized input descriptor file\ndescriptor_file=POWER_SYSTEM_DESCRIPTOR_FILE: PowerSystems descriptor file\ngenerator_mapping_file=GENERATOR_MAPPING_FILE: generator mapping configuration file\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.create_poly_cost-Tuple{Any, Any}","page":"Public API","title":"PowerSystems.create_poly_cost","text":"create_poly_cost(\n gen,\n cost_colnames\n) -> Union{Tuple{LinearCurve, Float64}, Tuple{QuadraticCurve, Float64}}\n\n\ncreate_poly_cost(gen, cost_colnames)\n\nReturn a Polynomial function cost based on the coeffiecients provided on gen.\n\nThree supported cases,\n\nIf three values are passed then we have data looking like: a2 * x^2 + a1 * x + a0,\nIf a1 and a0 are passed then we have data looking like: a1 * x + a0,\nIf only a1 is passed then we have data looking like: a1 * x.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.PowerModelsData","page":"Public API","title":"PowerSystems.PowerModelsData","text":"Container for data parsed by PowerModels\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.PowerModelsData-Tuple{Union{IO, String}}","page":"Public API","title":"PowerSystems.PowerModelsData","text":"PowerModelsData(\n file::Union{IO, String};\n kwargs...\n) -> PowerModelsData\n\n\nConstructs PowerModelsData from a raw file. Currently Supports MATPOWER and PSSE data files parsed by PowerModels.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.TamuSystem-Tuple{AbstractString}","page":"Public API","title":"PowerSystems.TamuSystem","text":"TamuSystem(tamu_folder::AbstractString; kwargs...) -> Any\n\n\nCreates a system from a PSS/e .RAW (v33) load flow case, and an associated .csv with MW load time series data. The format is established by the Texas A&M University Test Case Archive\n\nThe general format for data is folder: [casename].raw [casename]loadtimeseriesMW.csv\n\nArguments\n\ndirectory::AbstractString: directory containing RAW and CSV files\n\nExamples\n\nsys = TamuSystem(\n \"./ACTIVSg25k\",\n config_path = \"ACTIVSg25k_validation.json\",\n bus_name_formatter = x->string(x[\"name\"]*\"-\"*string(x[\"index\"])),\n load_name_formatter = x->strip(join(x[\"source_id\"], \"_\"))\n)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_dyn_injectors!-Tuple{System, AbstractString}","page":"Public API","title":"PowerSystems.add_dyn_injectors!","text":"add_dyn_injectors!(sys::System, dyr_file::AbstractString)\n\n\nAdd to a system already created the dynamic components. The system should already be parsed from a .raw file.\n\nExamples:\n\ndyr_file = \"Example.dyr\"\nadd_dyn_injectors!(sys, dyr_file)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.parse_file-Tuple{IO}","page":"Public API","title":"PowerSystems.parse_file","text":"parse_file(\n io::IO;\n import_all,\n validate,\n correct_branch_rating,\n filetype\n) -> Any\n\n\nParses the iostream from a file\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.parse_file-Tuple{String}","page":"Public API","title":"PowerSystems.parse_file","text":"parse_file(\n file::String;\n import_all,\n validate,\n correct_branch_rating\n) -> Any\n\n\nparse_file(\n file;\n import_all = false,\n validate = true,\n correct_branch_rating = true,\n)\n\nParses a Matpower .m file or PTI (PSS(R)E-v33) .raw file into a PowerModels data structure. All fields from PTI files will be imported if import_all is true (Default: false).\n\n\n\n\n\n","category":"method"},{"location":"api/public/#logging","page":"Public API","title":"Logging","text":"","category":"section"},{"location":"api/public/","page":"Public API","title":"Public API","text":"Modules = [PowerSystems]\nPages = [\"utils/logging.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.configure_logging-Tuple{}","page":"Public API","title":"PowerSystems.configure_logging","text":"configure_logging(\n;\n console_level,\n file_level,\n filename\n) -> MultiLogger\n\n\nCreates console and file loggers.\n\nNote: Log messages may not be written to the file until flush() or close() is called on the returned logger.\n\nArguments\n\nconsole_level = Logging.Error: level for console messages\nfile_level = Logging.Info: level for file messages\nfilename::Union{Nothing, AbstractString} = \"power-systems.log\": log file; pass nothing to disable file logging\n\nExample\n\nlogger = configure_logging(console_level = Logging.Info)\n@info \"log message\"\nclose(logger)\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Reserves","page":"Reserves","title":"Reserves","text":"","category":"section"},{"location":"model_library/reserves/#Constant-Reserve","page":"Reserves","title":"Constant Reserve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/ConstantReserve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.ConstantReserve","page":"Reserves","title":"PowerSystems.ConstantReserve","text":"mutable struct ConstantReserve{T <: ReserveDirection} <: Reserve{T}\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA reserve product with a constant procurement requirement, such as 3% of the system base power at all times.\n\nThis reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)\nrequirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)\nsustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)\nmax_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)\nmax_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)\ndeployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{ConstantReserve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::ConstantReserve) -> String\n\n\nGet ConstantReserve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::ConstantReserve) -> Bool\n\n\nGet ConstantReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::ConstantReserve) -> Float64\n\n\nGet ConstantReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::ConstantReserve) -> Dict{String, Any}\n\n\nGet ConstantReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_output_fraction-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(value::ConstantReserve) -> Float64\n\n\nGet ConstantReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::ConstantReserve\n) -> Float64\n\n\nGet ConstantReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::ConstantReserve) -> Any\n\n\nGet ConstantReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::ConstantReserve) -> Float64\n\n\nGet ConstantReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{ConstantReserve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::ConstantReserve) -> Float64\n\n\nGet ConstantReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_output_fraction!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::ConstantReserve,\n val\n) -> Any\n\n\nSet ConstantReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{ConstantReserve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::ConstantReserve, val) -> Any\n\n\nSet ConstantReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Constant-Reserve-Group","page":"Reserves","title":"Constant Reserve Group","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/ConstantReserveGroup.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.ConstantReserveGroup","page":"Reserves","title":"PowerSystems.ConstantReserveGroup","text":"mutable struct ConstantReserveGroup{T <: ReserveDirection} <: Service\n name::String\n available::Bool\n requirement::Float64\n ext::Dict{String, Any}\n contributing_services::Vector{Service}\n internal::InfrastructureSystemsInternal\nend\n\nA reserve product met by a group of individual reserves.\n\nThe group reserve requirement is added in addition to any individual reserve requirements, and devices that contribute to individual reserves within the group can also contribute to the overarching group reserve requirement. Example: A group of spinning and non-spinning reserves, where online generators providing spinning reserves can also contribute to the non-spinning reserve requirement.\n\nThis model has a constant procurement requirement, such as 3% of the system base power at all times. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nrequirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ncontributing_services::Vector{Service}: (default: Vector{Service}()) Services that contribute to this group requirement. Services must be added for this constraint to have an effect when conducting simulations in PowerSimulations.jl\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{ConstantReserveGroup}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::ConstantReserveGroup) -> String\n\n\nGet ConstantReserveGroup name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{ConstantReserveGroup}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::ConstantReserveGroup) -> Bool\n\n\nGet ConstantReserveGroup available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_contributing_services-Tuple{ConstantReserveGroup}","page":"Reserves","title":"PowerSystems.get_contributing_services","text":"get_contributing_services(\n value::ConstantReserveGroup\n) -> Vector{Service}\n\n\nGet ConstantReserveGroup contributing_services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{ConstantReserveGroup}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::ConstantReserveGroup) -> Dict{String, Any}\n\n\nGet ConstantReserveGroup ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{ConstantReserveGroup}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::ConstantReserveGroup) -> Any\n\n\nGet ConstantReserveGroup requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{ConstantReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::ConstantReserveGroup, val) -> Any\n\n\nSet ConstantReserveGroup available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{ConstantReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::ConstantReserveGroup, val) -> Any\n\n\nSet ConstantReserveGroup ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{ConstantReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::ConstantReserveGroup, val) -> Any\n\n\nSet ConstantReserveGroup requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Variable-Reserve","page":"Reserves","title":"Variable Reserve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/VariableReserve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.VariableReserve","page":"Reserves","title":"PowerSystems.VariableReserve","text":"mutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.\n\nThis reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric. To model the time varying requirement, a \"requirement\" time series should be added to this reserve\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)\nrequirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData\nsustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)\nmax_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)\nmax_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)\ndeployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{VariableReserve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::VariableReserve) -> String\n\n\nGet VariableReserve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::VariableReserve) -> Bool\n\n\nGet VariableReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::VariableReserve) -> Float64\n\n\nGet VariableReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::VariableReserve) -> Dict{String, Any}\n\n\nGet VariableReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_output_fraction-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(value::VariableReserve) -> Float64\n\n\nGet VariableReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::VariableReserve\n) -> Float64\n\n\nGet VariableReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::VariableReserve) -> Float64\n\n\nGet VariableReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::VariableReserve) -> Float64\n\n\nGet VariableReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::VariableReserve) -> Float64\n\n\nGet VariableReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_output_fraction!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::VariableReserve,\n val\n) -> Any\n\n\nSet VariableReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Reserve-Demand-Curve","page":"Reserves","title":"Reserve Demand Curve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/ReserveDemandCurve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.ReserveDemandCurve","page":"Reserves","title":"PowerSystems.ReserveDemandCurve","text":"mutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}\n variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}\n name::String\n available::Bool\n time_frame::Float64\n sustained_time::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA reserve product with an Operating Reserve Demand Curve (ORDC) for operational simulations.\n\nThe ORDC is modeled as a discretized set of (Reserve capacity (MW), Price ($/MWh)) steps, which can vary with time. Use set_variable_cost! to define the ORDCs.\n\nWhen defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric\n\nArguments\n\nvariable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}: Create this object with variable = nothing, then add assign a cost curve or time-series of variable_cost using the set_variable_cost! function, which will automatically update this parameter\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)\nsustained_time::Float64: (default: 3600.0) the time in seconds that the reserve contribution must sustained at a specified level, validation range: (0, nothing)\nmax_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)\ndeployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{ReserveDemandCurve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::ReserveDemandCurve) -> String\n\n\nGet ReserveDemandCurve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::ReserveDemandCurve) -> Bool\n\n\nGet ReserveDemandCurve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::ReserveDemandCurve) -> Dict{String, Any}\n\n\nGet ReserveDemandCurve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::ReserveDemandCurve\n) -> Float64\n\n\nGet ReserveDemandCurve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_variable-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_variable","text":"get_variable(\n value::ReserveDemandCurve\n) -> Union{Nothing, CostCurve{PiecewiseIncrementalCurve}, TimeSeriesKey}\n\n\nGet ReserveDemandCurve variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::ReserveDemandCurve,\n val\n) -> Any\n\n\nSet ReserveDemandCurve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::ReserveDemandCurve,\n val\n) -> Any\n\n\nSet ReserveDemandCurve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_variable!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_variable!","text":"set_variable!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#DCSource","page":"DCSource","title":"DCSource","text":"","category":"section"},{"location":"model_library/generated_DCSource/#FixedDCSource","page":"DCSource","title":"FixedDCSource","text":"","category":"section"},{"location":"model_library/generated_DCSource/","page":"DCSource","title":"DCSource","text":"Modules = [PowerSystems]\nPages = [\"/FixedDCSource.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCSource/#PowerSystems.FixedDCSource","page":"DCSource","title":"PowerSystems.FixedDCSource","text":"mutable struct FixedDCSource <: DCSource\n voltage::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Fixed DC Source that returns a fixed DC voltage\n\nArguments\n\nvoltage::Float64: Voltage (V), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) FixedDCSource has no states\nn_states::Int: (Do not modify.) FixedDCSource has no states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCSource/#PowerSystems.get_ext-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_ext","text":"get_ext(value::FixedDCSource) -> Dict{String, Any}\n\n\nGet FixedDCSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_n_states-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_n_states","text":"get_n_states(value::FixedDCSource) -> Int64\n\n\nGet FixedDCSource n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_states-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_states","text":"get_states(value::FixedDCSource) -> Vector{Symbol}\n\n\nGet FixedDCSource states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_voltage-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_voltage","text":"get_voltage(value::FixedDCSource) -> Float64\n\n\nGet FixedDCSource voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_ext!-Tuple{FixedDCSource, Any}","page":"DCSource","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedDCSource, val) -> Any\n\n\nSet FixedDCSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_voltage!-Tuple{FixedDCSource, Any}","page":"DCSource","title":"PowerSystems.set_voltage!","text":"set_voltage!(value::FixedDCSource, val) -> Any\n\n\nSet FixedDCSource voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#ZeroOrderBESS","page":"DCSource","title":"ZeroOrderBESS","text":"","category":"section"},{"location":"model_library/generated_DCSource/","page":"DCSource","title":"DCSource","text":"Modules = [PowerSystems]\nPages = [\"/ZeroOrderBESS.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCSource/#PowerSystems.ZeroOrderBESS","page":"DCSource","title":"PowerSystems.ZeroOrderBESS","text":"mutable struct ZeroOrderBESS <: DCSource\n rated_voltage::Float64\n rated_current::Float64\n battery_voltage::Float64\n battery_resistance::Float64\n dc_dc_inductor::Float64\n dc_link_capacitance::Float64\n fs::Float64\n kpv::Float64\n kiv::Float64\n kpi::Float64\n kii::Float64\n Vdc_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters for the DC-side with a Battery Energy Storage System from \"Grid-Coupled Dynamic Response of Battery-Driven Voltage Source Converters.\"\n\nArguments\n\nrated_voltage::Float64: Rated voltage (V), validation range: (0, nothing)\nrated_current::Float64: Rated current (A), validation range: (0, nothing)\nbattery_voltage::Float64: battery voltage in pu (DEVICE_BASE), validation range: (0, nothing)\nbattery_resistance::Float64: Battery resistance in pu (DEVICE_BASE), validation range: (0, nothing)\ndc_dc_inductor::Float64: DC/DC inductance in pu (DEVICE_BASE), validation range: (0, nothing)\ndc_link_capacitance::Float64: DC-link capacitance in pu (DEVICE_BASE), validation range: (0, nothing)\nfs::Float64: DC/DC converter switching frequency (kHz), validation range: (0, nothing)\nkpv::Float64: voltage controller proportional gain, validation range: (0, nothing)\nkiv::Float64: voltage controller integral gain, validation range: (0, nothing)\nkpi::Float64: current controller proportional gain, validation range: (0, nothing)\nkii::Float64: current controller integral gain, validation range: (0, nothing)\nVdc_ref::Float64: (default: 1.1) Reference DC-Voltage Set-point in pu (DEVICE_BASE), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ZeroOrderBESS model are:\n\nv_dc: DC-link voltage,\ni_b: Battery current,\n ν: integrator state of the voltage controller,\n ζ: integrator state of the PI current controller\n\nn_states::Int: (Do not modify.) ZeroOrderBESS has 4 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCSource/#PowerSystems.get_Vdc_ref-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_Vdc_ref","text":"get_Vdc_ref(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS Vdc_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_battery_resistance-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_battery_resistance","text":"get_battery_resistance(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS battery_resistance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_battery_voltage-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_battery_voltage","text":"get_battery_voltage(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS battery_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_dc_dc_inductor-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_dc_dc_inductor","text":"get_dc_dc_inductor(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS dc_dc_inductor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_dc_link_capacitance-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_dc_link_capacitance","text":"get_dc_link_capacitance(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS dc_link_capacitance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_ext-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_ext","text":"get_ext(value::ZeroOrderBESS) -> Dict{String, Any}\n\n\nGet ZeroOrderBESS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_fs-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_fs","text":"get_fs(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS fs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kii-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kii","text":"get_kii(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kii.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kiv-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kiv","text":"get_kiv(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kpi-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kpi","text":"get_kpi(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kpi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kpv-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kpv","text":"get_kpv(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_n_states-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_n_states","text":"get_n_states(value::ZeroOrderBESS) -> Int64\n\n\nGet ZeroOrderBESS n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_rated_current-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_rated_current","text":"get_rated_current(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_rated_voltage-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_rated_voltage","text":"get_rated_voltage(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_states-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_states","text":"get_states(value::ZeroOrderBESS) -> Vector{Symbol}\n\n\nGet ZeroOrderBESS states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_Vdc_ref!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_Vdc_ref!","text":"set_Vdc_ref!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS Vdc_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_battery_resistance!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_battery_resistance!","text":"set_battery_resistance!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS battery_resistance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_battery_voltage!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_battery_voltage!","text":"set_battery_voltage!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS battery_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_dc_dc_inductor!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_dc_dc_inductor!","text":"set_dc_dc_inductor!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS dc_dc_inductor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_dc_link_capacitance!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_dc_link_capacitance!","text":"set_dc_link_capacitance!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS dc_link_capacitance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_ext!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_ext!","text":"set_ext!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_fs!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_fs!","text":"set_fs!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS fs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kii!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kii!","text":"set_kii!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kii.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kiv!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kiv!","text":"set_kiv!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kpi!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kpi!","text":"set_kpi!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kpi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kpv!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kpv!","text":"set_kpv!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_rated_current!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_rated_current!","text":"set_rated_current!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_rated_voltage!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_rated_voltage!","text":"set_rated_voltage!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#Shaft","page":"Shaft","title":"Shaft","text":"","category":"section"},{"location":"model_library/generated_Shaft/#FiveMassShaft","page":"Shaft","title":"FiveMassShaft","text":"","category":"section"},{"location":"model_library/generated_Shaft/","page":"Shaft","title":"Shaft","text":"Modules = [PowerSystems]\nPages = [\"/FiveMassShaft.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Shaft/#PowerSystems.FiveMassShaft","page":"Shaft","title":"PowerSystems.FiveMassShaft","text":"mutable struct FiveMassShaft <: Shaft\n H::Float64\n H_hp::Float64\n H_ip::Float64\n H_lp::Float64\n H_ex::Float64\n D::Float64\n D_hp::Float64\n D_ip::Float64\n D_lp::Float64\n D_ex::Float64\n D_12::Float64\n D_23::Float64\n D_34::Float64\n D_45::Float64\n K_hp::Float64\n K_ip::Float64\n K_lp::Float64\n K_ex::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 5 mass-spring shaft model. It contains a High-Pressure (HP) steam turbine, Intermediate-Pressure (IP) steam turbine, Low-Pressure (LP) steam turbine, the Rotor and an Exciter (EX) mover\n\nArguments\n\nH::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)\nH_hp::Float64: High pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_ip::Float64: Intermediate pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_lp::Float64: Low pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_ex::Float64: Exciter inertia constant in MWs/MVA, validation range: (0, nothing)\nD::Float64: Rotor natural damping in pu, validation range: (0, nothing)\nD_hp::Float64: High pressure turbine natural damping in pu, validation range: (0, nothing)\nD_ip::Float64: Intermediate pressure turbine natural damping in pu, validation range: (0, nothing)\nD_lp::Float64: Low pressure turbine natural damping in pu, validation range: (0, nothing)\nD_ex::Float64: Exciter natural damping in pu, validation range: (0, nothing)\nD_12::Float64: High-Intermediate pressure turbine damping, validation range: (0, nothing)\nD_23::Float64: Intermediate-Low pressure turbine damping, validation range: (0, nothing)\nD_34::Float64: Low pressure turbine-Rotor damping, validation range: (0, nothing)\nD_45::Float64: Rotor-Exciter damping, validation range: (0, nothing)\nK_hp::Float64: High pressure turbine angle coefficient, validation range: (0, nothing)\nK_ip::Float64: Intermediate pressure turbine angle coefficient, validation range: (0, nothing)\nK_lp::Float64: Low pressure turbine angle coefficient, validation range: (0, nothing)\nK_ex::Float64: Exciter angle coefficient, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nδ: rotor angle,\nω: rotor speed,\nδ_hp: rotor angle of high pressure turbine,\nω_hp: rotor speed of high pressure turbine,\nδ_ip: rotor angle of intermediate pressure turbine,\nω_ip: rotor speed of intermediate pressure turbine,\nδ_lp: rotor angle of low pressure turbine,\nω_lp: rotor speed of low pressure turbine,\nδ_ex: rotor angle of exciter,\nω_lp: rotor speed of exciter\n\nn_states::Int: (Do not modify.) FiveMassShaft has 10 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D","text":"get_D(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_12-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_12","text":"get_D_12(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_23-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_23","text":"get_D_23(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_23.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_34-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_34","text":"get_D_34(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_34.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_45-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_45","text":"get_D_45(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_45.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_ex","text":"get_D_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_hp","text":"get_D_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_ip","text":"get_D_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_lp","text":"get_D_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H","text":"get_H(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_ex","text":"get_H_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_hp","text":"get_H_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_ip","text":"get_H_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_lp","text":"get_H_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_ex","text":"get_K_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_hp","text":"get_K_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_ip","text":"get_K_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_lp","text":"get_K_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_ext-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_ext","text":"get_ext(value::FiveMassShaft) -> Dict{String, Any}\n\n\nGet FiveMassShaft ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_n_states-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_n_states","text":"get_n_states(value::FiveMassShaft) -> Int64\n\n\nGet FiveMassShaft n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_states-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_states","text":"get_states(value::FiveMassShaft) -> Vector{Symbol}\n\n\nGet FiveMassShaft states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D!","text":"set_D!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_12!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_12!","text":"set_D_12!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_23!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_23!","text":"set_D_23!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_23.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_34!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_34!","text":"set_D_34!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_34.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_45!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_45!","text":"set_D_45!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_45.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_ex!","text":"set_D_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_hp!","text":"set_D_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_ip!","text":"set_D_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_lp!","text":"set_D_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H!","text":"set_H!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_ex!","text":"set_H_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_hp!","text":"set_H_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_ip!","text":"set_H_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_lp!","text":"set_H_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_ex!","text":"set_K_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_hp!","text":"set_K_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_ip!","text":"set_K_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_lp!","text":"set_K_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_ext!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_ext!","text":"set_ext!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#SingleMass","page":"Shaft","title":"SingleMass","text":"","category":"section"},{"location":"model_library/generated_Shaft/","page":"Shaft","title":"Shaft","text":"Modules = [PowerSystems]\nPages = [\"/SingleMass.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Shaft/#PowerSystems.SingleMass","page":"Shaft","title":"PowerSystems.SingleMass","text":"mutable struct SingleMass <: Shaft\n H::Float64\n D::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of single mass shaft model. Typically represents the rotor mass\n\nArguments\n\nH::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)\nD::Float64: Rotor natural damping in pu, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nδ: rotor angle,\nω: rotor speed\n\nn_states::Int: (Do not modify.) SingleMass has 1 state\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_D","text":"get_D(value::SingleMass) -> Float64\n\n\nGet SingleMass D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_H","text":"get_H(value::SingleMass) -> Float64\n\n\nGet SingleMass H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_ext-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_ext","text":"get_ext(value::SingleMass) -> Dict{String, Any}\n\n\nGet SingleMass ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_n_states-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_n_states","text":"get_n_states(value::SingleMass) -> Int64\n\n\nGet SingleMass n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_states-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_states","text":"get_states(value::SingleMass) -> Vector{Symbol}\n\n\nGet SingleMass states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_D!","text":"set_D!(value::SingleMass, val) -> Any\n\n\nSet SingleMass D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_H!","text":"set_H!(value::SingleMass, val) -> Any\n\n\nSet SingleMass H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_ext!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_ext!","text":"set_ext!(value::SingleMass, val) -> Any\n\n\nSet SingleMass ext.\n\n\n\n\n\n","category":"method"},{"location":"how_to/install/#install","page":"...install PowerSystems.jl","title":"Install PowerSystems.jl","text":"","category":"section"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"PowerSystems.jl is a command line tool written in the Julia programming language. To install:","category":"page"},{"location":"how_to/install/#Step-1:-Install-Julia","page":"...install PowerSystems.jl","title":"Step 1: Install Julia","text":"","category":"section"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Follow the instructions here","category":"page"},{"location":"how_to/install/#Step-2:-Open-Julia","page":"...install PowerSystems.jl","title":"Step 2: Open Julia","text":"","category":"section"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Start the Julia REPL from a command line:","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"$ julia","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"You should see the Julia REPL start up, which looks something like this:","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":" _\n _ _ _(_)_ | Documentation: https://docs.julialang.org\n (_) | (_) (_) |\n _ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.\n | | | | | | |/ _` | |\n | | |_| | | | (_| | | Version 1.10.4 (2024-06-04)\n _/ |\\__'_|_|_|\\__'_| | Official https://julialang.org/ release\n|__/ |\n\njulia>","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"If not, go back to check the Julia installation steps.","category":"page"},{"location":"how_to/install/#Step-3:-Install-PowerSystems.jl","page":"...install PowerSystems.jl","title":"Step 3: Install PowerSystems.jl","text":"","category":"section"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Install the latest stable release of PowerSystems.jl using the Julia package manager with:","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"] add PowerSystems","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Once you type ], you will see the prompt change color as it activates the Julia package manager. This command may take a few minutes to download the packages and compile them.","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Press the delete or backspace key to return to the REPL. ","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"Install is complete!","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"note: Alternate\nTo use the current development version instead, \"checkout\" the main branch of this package with:] add PowerSystems#main","category":"page"},{"location":"how_to/install/","page":"...install PowerSystems.jl","title":"...install PowerSystems.jl","text":"note: Note\nPowerSystems.jl uses InfrastructureSystems.jl as a utility library. Many methods are re-exported from InfrastructureSystems.jl. For most users there is no need to import InfrastructureSystems.jl.","category":"page"},{"location":"tutorials/get_component_data/#get_components_tutorial","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"","category":"section"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"In this tutorial, we will explore the data in a System, including looking at a summary of the system and getting both its components and their data. We will also start checking for time-series data, which we will explore more in the tutorial on Working with Time Series Data.","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"In Create and Explore a Power System, we created a basic System with nodes, a transmission line, and a few generators. Let's recreate that system if you don't have it already:","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"using PowerSystems;\nsys = System(100.0);\nbus1 = ACBus(1, \"bus1\", ACBusTypes.REF, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0);\nbus2 = ACBus(2, \"bus2\", ACBusTypes.PV, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0);\n","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"PowerSystems provides functional interfaces to all data. The following examples outline the intended approach to accessing data expressed using PowerSystems.","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"PowerSystems enforces unique name fields between components of a particular concrete type. So, in order to retrieve a specific component, the user must specify the type of the component along with the name and system","category":"page"},{"location":"tutorials/get_component_data/#Accessing-components-and-their-data","page":"Getting, Setting, and Viewing Data","title":"Accessing components and their data","text":"","category":"section"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"get_component(ACBus, sys, \"nodeA\")\nget_component(Line, sys, \"1\")","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"Similarly, you can access all the components of a particular type: *note: the return type of get_components is a FlattenIteratorWrapper, so call collect to get an Array","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"get_components(ACBus, sys) |> collect","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"get_components also works on abstract types:","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"get_components(Branch, sys) |> collect","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"The fields within a component can be accessed using the get_* functions: It's highly recommended that users avoid using the . to access fields since we make no guarantees on the stability field names and locations. We do however promise to keep the accessor functions stable.","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"bus1 = get_component(ACBus, sys, \"nodeA\")\n@show get_name(bus1);\n@show get_magnitude(bus1);\nnothing #hide","category":"page"},{"location":"tutorials/get_component_data/#Accessing-components-stored-in-the-system","page":"Getting, Setting, and Viewing Data","title":"Accessing components stored in the system","text":"","category":"section"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nsystem = System(joinpath(file_dir, \"RTS_GMLC.m\"));\nthermal_gens = get_components(ThermalStandard, system)","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"It is also possible to execute get_components with abstract types from the abstract tree. For instance, it is possible to retrieve all renewable generators","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"thermal_gens = get_components(RenewableGen, system)","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"The most common filtering requirement is by component name and for this case the method get_component returns a single component taking the device type, system and name as arguments.","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"my_thermal_gen = get_component(ThermalStandard, system, \"323_CC_1\")","category":"page"},{"location":"tutorials/get_component_data/#Accessing-data-stored-in-a-component","page":"Getting, Setting, and Viewing Data","title":"Accessing data stored in a component","text":"","category":"section"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"Using the \"dot\" access to get a parameter value from a component is actively discouraged, use \"getter\" functions instead","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"For example, the my_thermal_gen.active_power_limits parameter of a thermal generator should be accessed as follows:","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"get_active_power_limits(my_thermal_gen)","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"You can also view data from all instances of a concrete type in one table with the function show_components. It provides a few options:","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"View the standard fields by accepting the defaults.\nPass a dictionary where the keys are column names and the values are functions that accept a component as a single argument.\nPass a vector of symbols that are field names of the type.","category":"page"},{"location":"tutorials/get_component_data/","page":"Getting, Setting, and Viewing Data","title":"Getting, Setting, and Viewing Data","text":"show_components(system, ThermalStandard)\nshow_components(system, ThermalStandard, Dict(\"has_time_series\" => x -> has_time_series(x)))\nshow_components(system, ThermalStandard, [:active_power, :reactive_power])","category":"page"},{"location":"tutorials/get_component_data/#to-do:-add-a-link-in-the-system-that-MD-explanation-to-these-examples","page":"Getting, Setting, and Viewing Data","title":"to do: add a link in the system that MD explanation to these examples","text":"","category":"section"},{"location":"model_library/outer_control/#OuterControl","page":"OuterControl","title":"OuterControl","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"The outer control is composed by the ReactivePowerControl and the ActivePowerControl types.","category":"page"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"/OuterControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.OuterControl","page":"OuterControl","title":"PowerSystems.OuterControl","text":"mutable struct OuterControl{\n A <: ActivePowerControl,\n R <: ReactivePowerControl\n} <: DynamicInverterComponent\n active_power_control::A\n reactive_power_control::R\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Outer-Loop controller using a active power controller and a reactive power droop controller.\n\nArguments\n\nA <: ActivePowerControl: Active power controller (typically droop or virtual inertia).\nR <: ReactivePowerControl: Reactive power controller (typically droop).\next::Dict{String, Any}\nstates::Vector{Symbol}: Vector of states (will depend on the components).\nn_states::Int: Number of states (will depend on the components).\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{OuterControl}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::OuterControl) -> Dict{String, Any}\n\n\nGet ext from OuterControl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{OuterControl}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::OuterControl) -> Int64\n\n\nGet n_states from OuterControl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{OuterControl}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::OuterControl) -> Vector{Symbol}\n\n\nGet states from OuterControl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{OuterControl, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::OuterControl, val) -> Any\n\n\nSet OuterControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Active-Power-Controllers","page":"OuterControl","title":"Active Power Controllers","text":"","category":"section"},{"location":"model_library/outer_control/#Virtual-Inertia","page":"OuterControl","title":"Virtual Inertia","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/VirtualInertia.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.VirtualInertia","page":"OuterControl","title":"PowerSystems.VirtualInertia","text":"mutable struct VirtualInertia <: ActivePowerControl\n Ta::Float64\n kd::Float64\n kω::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Virtual Inertia with SRF using VSM for active power controller\n\nArguments\n\nTa::Float64: VSM inertia constant, validation range: (0, nothing)\nkd::Float64: VSM damping constant, validation range: (0, nothing)\nkω::Float64: frequency droop gain, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the VirtualInertia model are:\n\nθ_oc: Phase angle displacement of the virtual synchronous generator model\nω_oc: Speed of the rotating reference frame of the virtual synchronous generator model\n\nn_states::Int: (Do not modify.) VirtualInertia has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Ta-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_Ta","text":"get_Ta(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::VirtualInertia) -> Dict{String, Any}\n\n\nGet VirtualInertia ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kd-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_kd","text":"get_kd(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kω-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_kω","text":"get_kω(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia kω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::VirtualInertia) -> Int64\n\n\nGet VirtualInertia n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::VirtualInertia) -> Vector{Symbol}\n\n\nGet VirtualInertia states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Ta!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kd!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_kd!","text":"set_kd!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kω!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_kω!","text":"set_kω!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia kω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Active-Power-Droop","page":"OuterControl","title":"Active Power Droop","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ActivePowerDroop.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ActivePowerDroop","page":"OuterControl","title":"PowerSystems.ActivePowerDroop","text":"mutable struct ActivePowerDroop <: ActivePowerControl\n Rp::Float64\n ωz::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an Active Power droop controller\n\nArguments\n\nRp::Float64: Droop Gain, validation range: (0, nothing)\nωz::Float64: filter frequency cutoff, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ActivePowerDroop model are:\n\nθ_oc: Phase angle displacement of the inverter model,\np_oc: Measured active power of the inverter model\n\nn_states::Int: (Do not modify.) ActivePowerDroop has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::ActivePowerDroop) -> Float64\n\n\nGet ActivePowerDroop P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Rp-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_Rp","text":"get_Rp(value::ActivePowerDroop) -> Float64\n\n\nGet ActivePowerDroop Rp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ActivePowerDroop) -> Dict{String, Any}\n\n\nGet ActivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ActivePowerDroop) -> Int64\n\n\nGet ActivePowerDroop n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ActivePowerDroop) -> Vector{Symbol}\n\n\nGet ActivePowerDroop states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ωz-Tuple{ActivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ωz","text":"get_ωz(value::ActivePowerDroop) -> Float64\n\n\nGet ActivePowerDroop ωz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{ActivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::ActivePowerDroop, val) -> Any\n\n\nSet ActivePowerDroop P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Rp!-Tuple{ActivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_Rp!","text":"set_Rp!(value::ActivePowerDroop, val) -> Any\n\n\nSet ActivePowerDroop Rp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ActivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ActivePowerDroop, val) -> Any\n\n\nSet ActivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ωz!-Tuple{ActivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ωz!","text":"set_ωz!(value::ActivePowerDroop, val) -> Any\n\n\nSet ActivePowerDroop ωz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Active-Power-PI","page":"OuterControl","title":"Active Power PI","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ActivePowerPI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ActivePowerPI","page":"OuterControl","title":"PowerSystems.ActivePowerPI","text":"mutable struct ActivePowerPI <: ActivePowerControl\n Kp_p::Float64\n Ki_p::Float64\n ωz::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Proportional-Integral Active Power controller for a specified power reference\n\nArguments\n\nKp_p::Float64: Proportional Gain, validation range: (0, nothing)\nKi_p::Float64: Integral Gain, validation range: (0, nothing)\nωz::Float64: filter frequency cutoff, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ActivePowerPI model are:\n\nσp_oc: Integrator state of the PI Controller,\np_oc: Measured active power of the inverter model\n\nn_states::Int: (Do not modify.) ActivePowerPI has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_Ki_p-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_Ki_p","text":"get_Ki_p(value::ActivePowerPI) -> Float64\n\n\nGet ActivePowerPI Ki_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Kp_p-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_Kp_p","text":"get_Kp_p(value::ActivePowerPI) -> Float64\n\n\nGet ActivePowerPI Kp_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::ActivePowerPI) -> Float64\n\n\nGet ActivePowerPI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ActivePowerPI) -> Dict{String, Any}\n\n\nGet ActivePowerPI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ActivePowerPI) -> Int64\n\n\nGet ActivePowerPI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ActivePowerPI) -> Vector{Symbol}\n\n\nGet ActivePowerPI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ωz-Tuple{ActivePowerPI}","page":"OuterControl","title":"PowerSystems.get_ωz","text":"get_ωz(value::ActivePowerPI) -> Float64\n\n\nGet ActivePowerPI ωz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Ki_p!-Tuple{ActivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_Ki_p!","text":"set_Ki_p!(value::ActivePowerPI, val) -> Any\n\n\nSet ActivePowerPI Ki_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Kp_p!-Tuple{ActivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_Kp_p!","text":"set_Kp_p!(value::ActivePowerPI, val) -> Any\n\n\nSet ActivePowerPI Kp_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{ActivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::ActivePowerPI, val) -> Any\n\n\nSet ActivePowerPI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ActivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ActivePowerPI, val) -> Any\n\n\nSet ActivePowerPI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ωz!-Tuple{ActivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_ωz!","text":"set_ωz!(value::ActivePowerPI, val) -> Any\n\n\nSet ActivePowerPI ωz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Active-Virtual-Oscillator","page":"OuterControl","title":"Active Virtual Oscillator","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ActiveVirtualOscillator.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ActiveVirtualOscillator","page":"OuterControl","title":"PowerSystems.ActiveVirtualOscillator","text":"mutable struct ActiveVirtualOscillator <: ActivePowerControl\n k1::Float64\n ψ::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an Active Virtual Oscillator controller. Model is based on \"Model Reduction for Inverters with Current Limiting and Dispatchable Virtual Oscillator Control.\"\n\nArguments\n\nk1::Float64: VOC Synchronization Gain, validation range: (0, nothing)\nψ::Float64: Rotation angle of the controller, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ActiveVirtualOscillator model are:\n\nθ_oc: Phase angle displacement of the inverter model\n\nn_states::Int: (Do not modify.) ActiveVirtualOscillator has one state\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::ActiveVirtualOscillator) -> Float64\n\n\nGet ActiveVirtualOscillator P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ActiveVirtualOscillator) -> Dict{String, Any}\n\n\nGet ActiveVirtualOscillator ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_k1-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_k1","text":"get_k1(value::ActiveVirtualOscillator) -> Float64\n\n\nGet ActiveVirtualOscillator k1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ActiveVirtualOscillator) -> Int64\n\n\nGet ActiveVirtualOscillator n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ActiveVirtualOscillator) -> Vector{Symbol}\n\n\nGet ActiveVirtualOscillator states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ψ-Tuple{ActiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_ψ","text":"get_ψ(value::ActiveVirtualOscillator) -> Float64\n\n\nGet ActiveVirtualOscillator ψ.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{ActiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::ActiveVirtualOscillator, val) -> Any\n\n\nSet ActiveVirtualOscillator P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ActiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ActiveVirtualOscillator, val) -> Any\n\n\nSet ActiveVirtualOscillator ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_k1!-Tuple{ActiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_k1!","text":"set_k1!(value::ActiveVirtualOscillator, val) -> Any\n\n\nSet ActiveVirtualOscillator k1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ψ!-Tuple{ActiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_ψ!","text":"set_ψ!(value::ActiveVirtualOscillator, val) -> Any\n\n\nSet ActiveVirtualOscillator ψ.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Active-Renewable-Controller-Type-AB","page":"OuterControl","title":"Active Renewable Controller Type AB","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ActiveRenewableControllerAB.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ActiveRenewableControllerAB","page":"OuterControl","title":"PowerSystems.ActiveRenewableControllerAB","text":"mutable struct ActiveRenewableControllerAB <: ActivePowerControl\n bus_control::Int\n from_branch_control::Int\n to_branch_control::Int\n branch_id_control::String\n Freq_Flag::Int\n K_pg::Float64\n K_ig::Float64\n T_p::Float64\n fdbd_pnts::Tuple{Float64, Float64}\n fe_lim::MinMax\n P_lim::MinMax\n T_g::Float64\n D_dn::Float64\n D_up::Float64\n dP_lim::MinMax\n P_lim_inner::MinMax\n T_pord::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of Active Power Controller including REPCA1 and REECB1\n\nArguments\n\nbus_control::Int: ACBus identification number for voltage control. 0 identifies the local bus connected to this component, validation range: (0, nothing)\nfrom_branch_control::Int: Monitored branch FROM bus number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)\nto_branch_control::Int: Monitored branch TO bus number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)\nbranch_id_control::String: Branch circuit id for line drop compensation (as a string). If 0 generator power will be used\nFreq_Flag::Int: Frequency Flag for REPCA1: 0: disable, 1:enable, validation range: (0, 1)\nK_pg::Float64: Active power PI control proportional gain, validation range: (0, nothing)\nK_ig::Float64: Active power PI control integral gain, validation range: (0, nothing)\nT_p::Float64: Real power measurement filter time constant (s), validation range: (0, nothing)\nfdbd_pnts::Tuple{Float64, Float64}: Frequency error dead band thresholds (fdbd1, fdbd2)\nfe_lim::MinMax: Upper/Lower limit on frequency error (fe_min, fe_max)\nP_lim::MinMax: Upper/Lower limit on power reference (P_min, P_max)\nT_g::Float64: Power Controller lag time constant, validation range: (0, nothing)\nD_dn::Float64: Droop for over-frequency conditions, validation range: (nothing, 0)\nD_up::Float64: Droop for under-frequency conditions, validation range: (0, nothing)\ndP_lim::MinMax: Upper/Lower limit on power reference ramp rates(dP_min, dP_max)\nP_lim_inner::MinMax: Upper/Lower limit on power reference for REECB(P_min_inner, P_max_inner)\nT_pord::Float64: Power filter time constant REECB time constant, validation range: (0, nothing)\nP_ref::Float64: (default: 1.0) Reference Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ActiveRenewableControllerAB model depends on the Flag\nn_states::Int: (Do not modify.) The states of the ActiveRenewableControllerAB model depends on the Flag\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_D_dn-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_D_dn","text":"get_D_dn(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_D_up-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_D_up","text":"get_D_up(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Freq_Flag-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_Freq_Flag","text":"get_Freq_Flag(value::ActiveRenewableControllerAB) -> Int64\n\n\nGet ActiveRenewableControllerAB Freq_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_ig-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_ig","text":"get_K_ig(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB K_ig.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_pg-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_pg","text":"get_K_pg(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB K_pg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_P_lim-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_P_lim","text":"get_P_lim(\n value::ActiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ActiveRenewableControllerAB P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_P_lim_inner-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_P_lim_inner","text":"get_P_lim_inner(\n value::ActiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ActiveRenewableControllerAB P_lim_inner.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_g-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_g","text":"get_T_g(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_p-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_p","text":"get_T_p(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_pord-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_pord","text":"get_T_pord(value::ActiveRenewableControllerAB) -> Float64\n\n\nGet ActiveRenewableControllerAB T_pord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_branch_id_control-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_branch_id_control","text":"get_branch_id_control(\n value::ActiveRenewableControllerAB\n) -> String\n\n\nGet ActiveRenewableControllerAB branch_id_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_bus_control-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_bus_control","text":"get_bus_control(value::ActiveRenewableControllerAB) -> Int64\n\n\nGet ActiveRenewableControllerAB bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_dP_lim-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_dP_lim","text":"get_dP_lim(\n value::ActiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ActiveRenewableControllerAB dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(\n value::ActiveRenewableControllerAB\n) -> Dict{String, Any}\n\n\nGet ActiveRenewableControllerAB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_fdbd_pnts-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_fdbd_pnts","text":"get_fdbd_pnts(\n value::ActiveRenewableControllerAB\n) -> Tuple{Float64, Float64}\n\n\nGet ActiveRenewableControllerAB fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_fe_lim-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_fe_lim","text":"get_fe_lim(\n value::ActiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ActiveRenewableControllerAB fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_from_branch_control-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_from_branch_control","text":"get_from_branch_control(\n value::ActiveRenewableControllerAB\n) -> Int64\n\n\nGet ActiveRenewableControllerAB from_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ActiveRenewableControllerAB) -> Int64\n\n\nGet ActiveRenewableControllerAB n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(\n value::ActiveRenewableControllerAB\n) -> Vector{Symbol}\n\n\nGet ActiveRenewableControllerAB states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_to_branch_control-Tuple{ActiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_to_branch_control","text":"get_to_branch_control(\n value::ActiveRenewableControllerAB\n) -> Int64\n\n\nGet ActiveRenewableControllerAB to_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_D_dn!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_D_dn!","text":"set_D_dn!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB D_dn.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_D_up!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_D_up!","text":"set_D_up!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB D_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Freq_Flag!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_Freq_Flag!","text":"set_Freq_Flag!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB Freq_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_ig!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_ig!","text":"set_K_ig!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB K_ig.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_pg!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_pg!","text":"set_K_pg!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB K_pg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_lim!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_P_lim!","text":"set_P_lim!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB P_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_lim_inner!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_P_lim_inner!","text":"set_P_lim_inner!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB P_lim_inner.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_g!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_g!","text":"set_T_g!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_p!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_p!","text":"set_T_p!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_pord!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_pord!","text":"set_T_pord!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB T_pord.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_branch_id_control!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_branch_id_control!","text":"set_branch_id_control!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB branch_id_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_bus_control!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_bus_control!","text":"set_bus_control!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_dP_lim!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_dP_lim!","text":"set_dP_lim!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB dP_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_fdbd_pnts!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_fdbd_pnts!","text":"set_fdbd_pnts!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB fdbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_fe_lim!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_fe_lim!","text":"set_fe_lim!(value::ActiveRenewableControllerAB, val) -> Any\n\n\nSet ActiveRenewableControllerAB fe_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_from_branch_control!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_from_branch_control!","text":"set_from_branch_control!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB from_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_to_branch_control!-Tuple{ActiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_to_branch_control!","text":"set_to_branch_control!(\n value::ActiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ActiveRenewableControllerAB to_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Reactive-Power-Controllers","page":"OuterControl","title":"Reactive Power Controllers","text":"","category":"section"},{"location":"model_library/outer_control/#Reactive-Power-Droop","page":"OuterControl","title":"Reactive Power Droop","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ReactivePowerDroop.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ReactivePowerDroop","page":"OuterControl","title":"PowerSystems.ReactivePowerDroop","text":"mutable struct ReactivePowerDroop <: ReactivePowerControl\n kq::Float64\n ωf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Reactive Power droop controller\n\nArguments\n\nkq::Float64: frequency droop gain, validation range: (0, nothing)\nωf::Float64: filter frequency cutoff, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ReactivePowerDroop model are:\n\nq_oc: Filtered reactive output power\n\nn_states::Int: (Do not modify.) ReactivePowerDroop has 1 state\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_V_ref-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ReactivePowerDroop) -> Dict{String, Any}\n\n\nGet ReactivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kq-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_kq","text":"get_kq(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop kq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReactivePowerDroop) -> Int64\n\n\nGet ReactivePowerDroop n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ReactivePowerDroop) -> Vector{Symbol}\n\n\nGet ReactivePowerDroop states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ωf-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ωf","text":"get_ωf(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_ref!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kq!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_kq!","text":"set_kq!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop kq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ωf!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ωf!","text":"set_ωf!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Reactive-Power-PI","page":"OuterControl","title":"Reactive Power PI","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ReactivePowerPI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ReactivePowerPI","page":"OuterControl","title":"PowerSystems.ReactivePowerPI","text":"mutable struct ReactivePowerPI <: ReactivePowerControl\n Kp_q::Float64\n Ki_q::Float64\n ωf::Float64\n V_ref::Float64\n Q_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Proportional-Integral Reactive Power controller for a specified power reference\n\nArguments\n\nKp_q::Float64: Proportional Gain, validation range: (0, nothing)\nKi_q::Float64: Integral Gain, validation range: (0, nothing)\nωf::Float64: filter frequency cutoff, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Voltage Set-point (pu), validation range: (0, nothing)\nQ_ref::Float64: (default: 1.0) Reactive Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ReactivePowerPI model are:\n\nσq_oc: Integrator state of the PI Controller,\nq_oc: Measured reactive power of the inverter model\n\nn_states::Int: (Do not modify.) ReactivePowerPI has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_Ki_q-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_Ki_q","text":"get_Ki_q(value::ReactivePowerPI) -> Float64\n\n\nGet ReactivePowerPI Ki_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Kp_q-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_Kp_q","text":"get_Kp_q(value::ReactivePowerPI) -> Float64\n\n\nGet ReactivePowerPI Kp_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Q_ref-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::ReactivePowerPI) -> Float64\n\n\nGet ReactivePowerPI Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_ref-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ReactivePowerPI) -> Float64\n\n\nGet ReactivePowerPI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ReactivePowerPI) -> Dict{String, Any}\n\n\nGet ReactivePowerPI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReactivePowerPI) -> Int64\n\n\nGet ReactivePowerPI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ReactivePowerPI) -> Vector{Symbol}\n\n\nGet ReactivePowerPI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ωf-Tuple{ReactivePowerPI}","page":"OuterControl","title":"PowerSystems.get_ωf","text":"get_ωf(value::ReactivePowerPI) -> Float64\n\n\nGet ReactivePowerPI ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Ki_q!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_Ki_q!","text":"set_Ki_q!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI Ki_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Kp_q!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_Kp_q!","text":"set_Kp_q!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI Kp_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Q_ref!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_ref!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ωf!-Tuple{ReactivePowerPI, Any}","page":"OuterControl","title":"PowerSystems.set_ωf!","text":"set_ωf!(value::ReactivePowerPI, val) -> Any\n\n\nSet ReactivePowerPI ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Reactive-Virtual-Oscillator","page":"OuterControl","title":"Reactive Virtual Oscillator","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ReactiveVirtualOscillator.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ReactiveVirtualOscillator","page":"OuterControl","title":"PowerSystems.ReactiveVirtualOscillator","text":"mutable struct ReactiveVirtualOscillator <: ReactivePowerControl\n k2::Float64\n V_ref::Float64\n Q_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Reactive Virtual Oscillator controller. Model is based on \"Model Reduction for Inverters with Current Limiting and Dispatchable Virtual Oscillator Control.\"\n\nArguments\n\nk2::Float64: VOC voltage-amplitude control gain, validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\nQ_ref::Float64: (default: 1.0) Reference Reactive Power Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ReactiveVirtualOscilator model are:\n\nE_oc: voltage reference state for inner control in the d-axis\n\nn_states::Int: (Do not modify.) ReactiveVirtualOscillator has 1 state\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_Q_ref-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::ReactiveVirtualOscillator) -> Float64\n\n\nGet ReactiveVirtualOscillator Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_ref-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ReactiveVirtualOscillator) -> Float64\n\n\nGet ReactiveVirtualOscillator V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(\n value::ReactiveVirtualOscillator\n) -> Dict{String, Any}\n\n\nGet ReactiveVirtualOscillator ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_k2-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_k2","text":"get_k2(value::ReactiveVirtualOscillator) -> Float64\n\n\nGet ReactiveVirtualOscillator k2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReactiveVirtualOscillator) -> Int64\n\n\nGet ReactiveVirtualOscillator n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ReactiveVirtualOscillator}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(\n value::ReactiveVirtualOscillator\n) -> Vector{Symbol}\n\n\nGet ReactiveVirtualOscillator states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Q_ref!-Tuple{ReactiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::ReactiveVirtualOscillator, val) -> Any\n\n\nSet ReactiveVirtualOscillator Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_ref!-Tuple{ReactiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ReactiveVirtualOscillator, val) -> Any\n\n\nSet ReactiveVirtualOscillator V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ReactiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReactiveVirtualOscillator, val) -> Any\n\n\nSet ReactiveVirtualOscillator ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_k2!-Tuple{ReactiveVirtualOscillator, Any}","page":"OuterControl","title":"PowerSystems.set_k2!","text":"set_k2!(value::ReactiveVirtualOscillator, val) -> Any\n\n\nSet ReactiveVirtualOscillator k2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Reactive-Renewable-Controller-Type-AB","page":"OuterControl","title":"Reactive Renewable Controller Type AB","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ReactiveRenewableControllerAB.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ReactiveRenewableControllerAB","page":"OuterControl","title":"PowerSystems.ReactiveRenewableControllerAB","text":"mutable struct ReactiveRenewableControllerAB <: ReactivePowerControl\n bus_control::Int\n from_branch_control::Int\n to_branch_control::Int\n branch_id_control::String\n VC_Flag::Int\n Ref_Flag::Int\n PF_Flag::Int\n V_Flag::Int\n T_fltr::Float64\n K_p::Float64\n K_i::Float64\n T_ft::Float64\n T_fv::Float64\n V_frz::Float64\n R_c::Float64\n X_c::Float64\n K_c::Float64\n e_lim::MinMax\n dbd_pnts::Tuple{Float64, Float64}\n Q_lim::MinMax\n T_p::Float64\n Q_lim_inner::MinMax\n V_lim::MinMax\n K_qp::Float64\n K_qi::Float64\n Q_ref::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of Reactive Power Controller including REPCA1 and REECB1\n\nArguments\n\nbus_control::Int: ACBus identification number for voltage control. 0 identifies the local bus connected to this component, validation range: (0, nothing)\nfrom_branch_control::Int: Monitored branch FROM bus identification number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)\nto_branch_control::Int: Monitored branch TO bus identification number for line drop compensation (if 0 generator power will be used), validation range: (0, nothing)\nbranch_id_control::String: Branch circuit id for line drop compensation (as a string). If 0 generator power will be used\nVC_Flag::Int: Voltage Compensator Flag for REPCA1, validation range: (0, 1)\nRef_Flag::Int: Flag for Reactive Power Control for REPCA1. 0: Q-control, 1: V-control, validation range: (0, 1)\nPF_Flag::Int: Flag for Power Factor Control for Outer Control of REECB1. 0: Q-control, 1: Power Factor Control, validation range: (0, 1)\nV_Flag::Int: Flag for Voltage Control for Outer Control of REECB1. 0: Voltage Control, 1: Q-Control, validation range: (0, 1)\nT_fltr::Float64: Voltage or Q-power of REPCA Filter Time Constant, validation range: (0, nothing)\nK_p::Float64: Reactive power PI control proportional gain, validation range: (0, nothing)\nK_i::Float64: Reactive power PI control integral gain, validation range: (0, nothing)\nT_ft::Float64: Reactive power lead time constant (s), validation range: (0, nothing)\nT_fv::Float64: Reactive power lag time constant (s), validation range: (0, nothing)\nV_frz::Float64: Voltage below which state ξq_oc (integrator state) is freeze, validation range: (0, nothing)\nR_c::Float64: Line drop compensation resistance (used when VC_Flag = 1), validation range: (0, nothing)\nX_c::Float64: Line drop compensation reactance (used when VC_Flag = 1), validation range: (0, nothing)\nK_c::Float64: Reactive current compensation gain (pu) (used when VC_Flag = 0), validation range: (0, nothing)\ne_lim::MinMax: Upper/Lower limit on Voltage or Q-power deadband output (e_min, e_max)\ndbd_pnts::Tuple{Float64, Float64}: Voltage or Q-power error dead band thresholds (dbd1, dbd2)\nQ_lim::MinMax: Upper/Lower limit on reactive power V/Q control in REPCA (Q_min, Q_max)\nT_p::Float64: Active power lag time constant in REECB (s). Used only when PF_Flag = 1, validation range: (0, nothing)\nQ_lim_inner::MinMax: Upper/Lower limit on reactive power input in REECB (Q_min_inner, Q_max_inner). Only used when V_Flag = 1\nV_lim::MinMax: Upper/Lower limit on reactive power PI controller in REECB (V_min, V_max). Only used when V_Flag = 1\nK_qp::Float64: Reactive power regulator proportional gain (used when V_Flag = 1), validation range: (0, nothing)\nK_qi::Float64: Reactive power regulator integral gain (used when V_Flag = 1), validation range: (0, nothing)\nQ_ref::Float64: (default: 1.0) Reference Reactive Power Set-point (pu), validation range: (0, nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ReactiveRenewableControllerAB model depends on the Flag\nn_states::Int: (Do not modify.) The states of the ReactiveRenewableControllerAB model depends on the Flag\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_K_c-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_c","text":"get_K_c(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB K_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_i-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_i","text":"get_K_i(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_p-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_p","text":"get_K_p(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_qi-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_qi","text":"get_K_qi(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB K_qi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_K_qp-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_K_qp","text":"get_K_qp(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB K_qp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_PF_Flag-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_PF_Flag","text":"get_PF_Flag(value::ReactiveRenewableControllerAB) -> Int64\n\n\nGet ReactiveRenewableControllerAB PF_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Q_lim-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_Q_lim","text":"get_Q_lim(\n value::ReactiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ReactiveRenewableControllerAB Q_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Q_lim_inner-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_Q_lim_inner","text":"get_Q_lim_inner(\n value::ReactiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ReactiveRenewableControllerAB Q_lim_inner.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Q_ref-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_R_c-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_R_c","text":"get_R_c(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB R_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Ref_Flag-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_Ref_Flag","text":"get_Ref_Flag(value::ReactiveRenewableControllerAB) -> Int64\n\n\nGet ReactiveRenewableControllerAB Ref_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_fltr-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_fltr","text":"get_T_fltr(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_ft-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_ft","text":"get_T_ft(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB T_ft.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_fv-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_fv","text":"get_T_fv(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB T_fv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_T_p-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_T_p","text":"get_T_p(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_VC_Flag-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_VC_Flag","text":"get_VC_Flag(value::ReactiveRenewableControllerAB) -> Int64\n\n\nGet ReactiveRenewableControllerAB VC_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_Flag-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_V_Flag","text":"get_V_Flag(value::ReactiveRenewableControllerAB) -> Int64\n\n\nGet ReactiveRenewableControllerAB V_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_frz-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_V_frz","text":"get_V_frz(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB V_frz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_lim-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_V_lim","text":"get_V_lim(\n value::ReactiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ReactiveRenewableControllerAB V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_V_ref-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_X_c-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_X_c","text":"get_X_c(value::ReactiveRenewableControllerAB) -> Float64\n\n\nGet ReactiveRenewableControllerAB X_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_branch_id_control-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_branch_id_control","text":"get_branch_id_control(\n value::ReactiveRenewableControllerAB\n) -> String\n\n\nGet ReactiveRenewableControllerAB branch_id_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_bus_control-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_bus_control","text":"get_bus_control(\n value::ReactiveRenewableControllerAB\n) -> Int64\n\n\nGet ReactiveRenewableControllerAB bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_dbd_pnts-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_dbd_pnts","text":"get_dbd_pnts(\n value::ReactiveRenewableControllerAB\n) -> Tuple{Float64, Float64}\n\n\nGet ReactiveRenewableControllerAB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_e_lim-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_e_lim","text":"get_e_lim(\n value::ReactiveRenewableControllerAB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ReactiveRenewableControllerAB e_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(\n value::ReactiveRenewableControllerAB\n) -> Dict{String, Any}\n\n\nGet ReactiveRenewableControllerAB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_from_branch_control-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_from_branch_control","text":"get_from_branch_control(\n value::ReactiveRenewableControllerAB\n) -> Int64\n\n\nGet ReactiveRenewableControllerAB from_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReactiveRenewableControllerAB) -> Int64\n\n\nGet ReactiveRenewableControllerAB n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(\n value::ReactiveRenewableControllerAB\n) -> Vector{Symbol}\n\n\nGet ReactiveRenewableControllerAB states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_to_branch_control-Tuple{ReactiveRenewableControllerAB}","page":"OuterControl","title":"PowerSystems.get_to_branch_control","text":"get_to_branch_control(\n value::ReactiveRenewableControllerAB\n) -> Int64\n\n\nGet ReactiveRenewableControllerAB to_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_c!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_c!","text":"set_K_c!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB K_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_i!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_i!","text":"set_K_i!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_p!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_qi!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_qi!","text":"set_K_qi!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB K_qi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_K_qp!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_K_qp!","text":"set_K_qp!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB K_qp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_PF_Flag!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_PF_Flag!","text":"set_PF_Flag!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB PF_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Q_lim!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_Q_lim!","text":"set_Q_lim!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB Q_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Q_lim_inner!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_Q_lim_inner!","text":"set_Q_lim_inner!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB Q_lim_inner.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Q_ref!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_R_c!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_R_c!","text":"set_R_c!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB R_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Ref_Flag!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_Ref_Flag!","text":"set_Ref_Flag!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB Ref_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_fltr!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_fltr!","text":"set_T_fltr!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_ft!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_ft!","text":"set_T_ft!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB T_ft.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_fv!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_fv!","text":"set_T_fv!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB T_fv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_T_p!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_T_p!","text":"set_T_p!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB T_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_VC_Flag!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_VC_Flag!","text":"set_VC_Flag!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB VC_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_Flag!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_V_Flag!","text":"set_V_Flag!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB V_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_frz!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_V_frz!","text":"set_V_frz!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB V_frz.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_lim!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_ref!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_X_c!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_X_c!","text":"set_X_c!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB X_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_branch_id_control!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_branch_id_control!","text":"set_branch_id_control!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB branch_id_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_bus_control!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_bus_control!","text":"set_bus_control!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_dbd_pnts!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_dbd_pnts!","text":"set_dbd_pnts!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_e_lim!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_e_lim!","text":"set_e_lim!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB e_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReactiveRenewableControllerAB, val) -> Any\n\n\nSet ReactiveRenewableControllerAB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_from_branch_control!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_from_branch_control!","text":"set_from_branch_control!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB from_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_to_branch_control!-Tuple{ReactiveRenewableControllerAB, Any}","page":"OuterControl","title":"PowerSystems.set_to_branch_control!","text":"set_to_branch_control!(\n value::ReactiveRenewableControllerAB,\n val\n) -> Any\n\n\nSet ReactiveRenewableControllerAB to_branch_control.\n\n\n\n\n\n","category":"method"},{"location":"how_to/parse_matpower_psse/#pm_data","page":"...parse data from MATPOWER or PSS/e files","title":"Parsing MATPOWER or PSS/e Files","text":"","category":"section"},{"location":"how_to/parse_matpower_psse/","page":"...parse data from MATPOWER or PSS/e files","title":"...parse data from MATPOWER or PSS/e files","text":"The following code will create a System from a MATPOWER .m or PSS/e .raw file:","category":"page"},{"location":"how_to/parse_matpower_psse/","page":"...parse data from MATPOWER or PSS/e files","title":"...parse data from MATPOWER or PSS/e files","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nsys = System(joinpath(file_dir, \"case5.m\"))","category":"page"},{"location":"how_to/parse_matpower_psse/","page":"...parse data from MATPOWER or PSS/e files","title":"...parse data from MATPOWER or PSS/e files","text":"This parsing code was copied with permission from PowerModels.jl.","category":"page"},{"location":"how_to/parse_matpower_psse/#See-also:","page":"...parse data from MATPOWER or PSS/e files","title":"See also:","text":"","category":"section"},{"location":"how_to/parse_matpower_psse/","page":"...parse data from MATPOWER or PSS/e files","title":"...parse data from MATPOWER or PSS/e files","text":"Parsing PSS/e .dyr Files, which also includes an example of parsing a .raw file\nParsing table data (CSV Files)\nParsing time series","category":"page"},{"location":"model_library/generated_InnerControl/#InnerControl","page":"InnerControl","title":"InnerControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/#CurrentModeControl","page":"InnerControl","title":"CurrentModeControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/CurrentModeControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.CurrentModeControl","page":"InnerControl","title":"PowerSystems.CurrentModeControl","text":"mutable struct CurrentModeControl <: InnerControl\n kpc::Float64\n kic::Float64\n kffv::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an inner loop proportional integral (PI) current control based on \"Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters.\"\n\nArguments\n\nkpc::Float64: Current controller proportional gain, validation range: (0, nothing)\nkic::Float64: Current controller integral gain, validation range: (0, nothing)\nkffv::Float64: Gain to enable feed-forward gain of voltage, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the CurrentModeControl model are:\n\nγd_ic: d-axis integrator state of the PI current controller,\nγq_ic: q-axis integrator state of the PI current controller\n\nn_states::Int: (Do not modify.) CurrentControl has 2 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::CurrentModeControl) -> Dict{String, Any}\n\n\nGet CurrentModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffv-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kffv","text":"get_kffv(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kic-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kic","text":"get_kic(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpc-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kpc","text":"get_kpc(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::CurrentModeControl) -> Int64\n\n\nGet CurrentModeControl n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::CurrentModeControl) -> Vector{Symbol}\n\n\nGet CurrentModeControl states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffv!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffv!","text":"set_kffv!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kic!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kic!","text":"set_kic!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpc!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpc!","text":"set_kpc!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#RECurrentControlB","page":"InnerControl","title":"RECurrentControlB","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/RECurrentControlB.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.RECurrentControlB","page":"InnerControl","title":"PowerSystems.RECurrentControlB","text":"mutable struct RECurrentControlB <: InnerControl\n Q_Flag::Int\n PQ_Flag::Int\n Vdip_lim::MinMax\n T_rv::Float64\n dbd_pnts::Tuple{Float64, Float64}\n K_qv::Float64\n Iqinj_lim::MinMax\n V_ref0::Float64\n K_vp::Float64\n K_vi::Float64\n T_iq::Float64\n I_max::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of the Inner Control part of the REECB model in PSS/E\n\nArguments\n\nQ_Flag::Int: Q Flag used for I_qinj, validation range: (0, 1)\nPQ_Flag::Int: PQ Flag used for the Current Limit Logic, validation range: (0, 1)\nVdip_lim::MinMax: Limits for Voltage Dip Logic (Vdip, Vup)\nT_rv::Float64: Voltage Filter Time Constant, validation range: (0, nothing)\ndbd_pnts::Tuple{Float64, Float64}: Voltage error deadband thresholds (dbd1, dbd2)\nK_qv::Float64: Reactive current injection gain during over and undervoltage conditions, validation range: (0, nothing)\nIqinj_lim::MinMax: Limits for Iqinj (I_qh1, I_ql1)\nV_ref0::Float64: User defined reference. If 0, PowerSimulationsDynamics.jl initializes to initial terminal voltage, validation range: (0, nothing)\nK_vp::Float64: Voltage regulator proportional gain (used when QFlag = 1), validation range: (0, nothing)\nK_vi::Float64: Voltage regulator integral gain (used when QFlag = 1), validation range: (0, nothing)\nT_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)\nI_max::Float64: Maximum limit on total converter current, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the RECurrentControlB depends on the Flags\nn_states::Int: (Do not modify.) The states of the RECurrentControlB depends on the Flags\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_I_max-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_I_max","text":"get_I_max(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Iqinj_lim-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Iqinj_lim","text":"get_Iqinj_lim(\n value::RECurrentControlB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RECurrentControlB Iqinj_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_qv-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_qv","text":"get_K_qv(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_vi-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_vi","text":"get_K_vi(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_vi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_vp-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_vp","text":"get_K_vp(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_vp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_PQ_Flag-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_PQ_Flag","text":"get_PQ_Flag(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Q_Flag-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Q_Flag","text":"get_Q_Flag(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB Q_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_T_iq-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_T_iq","text":"get_T_iq(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_T_rv-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_T_rv","text":"get_T_rv(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_V_ref0-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_V_ref0","text":"get_V_ref0(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB V_ref0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Vdip_lim-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Vdip_lim","text":"get_Vdip_lim(\n value::RECurrentControlB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RECurrentControlB Vdip_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_dbd_pnts-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_dbd_pnts","text":"get_dbd_pnts(\n value::RECurrentControlB\n) -> Tuple{Float64, Float64}\n\n\nGet RECurrentControlB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::RECurrentControlB) -> Dict{String, Any}\n\n\nGet RECurrentControlB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::RECurrentControlB) -> Vector{Symbol}\n\n\nGet RECurrentControlB states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_I_max!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Iqinj_lim!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Iqinj_lim!","text":"set_Iqinj_lim!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Iqinj_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_qv!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_qv!","text":"set_K_qv!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_vi!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_vi!","text":"set_K_vi!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_vi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_vp!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_vp!","text":"set_K_vp!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_vp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_PQ_Flag!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_PQ_Flag!","text":"set_PQ_Flag!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Q_Flag!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Q_Flag!","text":"set_Q_Flag!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Q_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_T_iq!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_T_iq!","text":"set_T_iq!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_T_rv!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_T_rv!","text":"set_T_rv!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_V_ref0!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_V_ref0!","text":"set_V_ref0!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB V_ref0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Vdip_lim!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Vdip_lim!","text":"set_Vdip_lim!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Vdip_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_dbd_pnts!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_dbd_pnts!","text":"set_dbd_pnts!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#VoltageModeControl","page":"InnerControl","title":"VoltageModeControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/VoltageModeControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.VoltageModeControl","page":"InnerControl","title":"PowerSystems.VoltageModeControl","text":"mutable struct VoltageModeControl <: InnerControl\n kpv::Float64\n kiv::Float64\n kffv::Float64\n rv::Float64\n lv::Float64\n kpc::Float64\n kic::Float64\n kffi::Float64\n ωad::Float64\n kad::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an inner loop current control PID using virtual impedance based on \"A Virtual Synchronous Machine implementation for distributed control of power converters in SmartGrids.\"\n\nArguments\n\nkpv::Float64: voltage controller proportional gain, validation range: (0, nothing)\nkiv::Float64: voltage controller integral gain, validation range: (0, nothing)\nkffv::Float64: Binary variable to enable feed-forward gain of voltage, validation range: (0, nothing)\nrv::Float64: virtual resistance, validation range: (0, nothing)\nlv::Float64: virtual inductance, validation range: (0, nothing)\nkpc::Float64: current controller proportional gain, validation range: (0, nothing)\nkic::Float64: current controller integral gain, validation range: (0, nothing)\nkffi::Float64: Binary variable to enable feed-forward gain of current, validation range: (0, nothing)\nωad::Float64: active damping filter cutoff frequency (rad/sec), validation range: (0, nothing)\nkad::Float64: active damping gain, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the VoltageModeControl model are:\n\nξd_ic: d-axis integrator state of the PI voltage controller,\nξq_ic: q-axis integrator state of the PI voltage controller,\nγd_ic: d-axis integrator state of the PI current controller,\nγq_ic: q-axis integrator state of the PI current controller,\nϕd_ic: d-axis low-pass filter of active damping,\nϕq_ic: q-axis low-pass filter of active damping\n\nn_states::Int: (Do not modify.) VoltageModeControl has 6 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::VoltageModeControl) -> Dict{String, Any}\n\n\nGet VoltageModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kad-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kad","text":"get_kad(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffi-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kffi","text":"get_kffi(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kffi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kffv","text":"get_kffv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kic-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kic","text":"get_kic(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kiv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kiv","text":"get_kiv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpc-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kpc","text":"get_kpc(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kpv","text":"get_kpv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_lv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_lv","text":"get_lv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::VoltageModeControl) -> Int64\n\n\nGet VoltageModeControl n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_rv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_rv","text":"get_rv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::VoltageModeControl) -> Vector{Symbol}\n\n\nGet VoltageModeControl states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ωad-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_ωad","text":"get_ωad(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl ωad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kad!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kad!","text":"set_kad!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffi!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffi!","text":"set_kffi!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kffi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffv!","text":"set_kffv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kic!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kic!","text":"set_kic!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kiv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kiv!","text":"set_kiv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpc!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpc!","text":"set_kpc!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpv!","text":"set_kpv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_lv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_lv!","text":"set_lv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_rv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_rv!","text":"set_rv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ωad!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ωad!","text":"set_ωad!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl ωad.\n\n\n\n\n\n","category":"method"},{"location":"how_to/serialize_data/#Write,-View,-and-Load-Data-with-a-JSON","page":"...write and read data with a JSON","title":"Write, View, and Load Data with a JSON","text":"","category":"section"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"PowerSystems.jl provides functionality to serialize an entire System to a JSON file and then deserialize it back to a System. The main benefit is that deserializing is significantly faster than reconstructing the System from raw data files.","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"The sections below show how to write data to a JSON, explore the data while it is in JSON format, and load Data saved in a JSON back into PowerSystems.jl.","category":"page"},{"location":"how_to/serialize_data/#Write-data-to-a-JSON","page":"...write and read data with a JSON","title":"Write data to a JSON","text":"","category":"section"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"You can do this to save your own custom System, but we'll use an existing dataset from PowerSystemCaseBuilder.jl, simply to illustrate the process.","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"First, load the dependencies and a System from PowerSystemCaseBuilder:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"using PowerSystems\nusing PowerSystemCaseBuilder\nsys = build_system(PSISystems, \"c_sys5_pjm\")","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Set up your target path, for example in a \"mysystems\" subfolder:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"folder = mkdir(\"mysystems\");\npath = joinpath(folder, \"system.json\")","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Now write the system to JSON:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"to_json(sys, path)","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Notice in the Info statements that the serialization process stores 3 files:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"System data file (*.json file)\nValidation data file (*.json file)\nTime Series data file (*.h5 file)","category":"page"},{"location":"how_to/serialize_data/#Viewing-PowerSystems-Data-in-JSON-Format","page":"...write and read data with a JSON","title":"Viewing PowerSystems Data in JSON Format","text":"","category":"section"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Some users prefer to view and filter the PowerSystems.jl data while it is in JSON format. There are many tools available to browse JSON data.","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Here is an example GUI tool that is available online in a browser.","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"The command line utility jq offers even more features. Below are some example commands, called from the command line within the \"mysystems\" subfolder:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"View the entire file pretty-printed:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"jq . system.json","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"View the PowerSystems component types:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"jq '.data.components | .[] | .__metadata__ | .type' system.json | sort | uniq","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"View specific components:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\")' system.json","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Get the count of a component type:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"# There is almost certainly a better way.\njq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\")' system.json | grep -c ThermalStandard","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"View specific component by name:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\" and .name == \"107_CC_1\")' system.json","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Filter on a field value:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\" and .active_power > 2.3)' system.json","category":"page"},{"location":"how_to/serialize_data/#Read-the-JSON-file-and-create-a-new-System","page":"...write and read data with a JSON","title":"Read the JSON file and create a new System","text":"","category":"section"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"Finally, you can read the file back in, and verify the new system has the same data as above:","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"sys2 = System(path)\nrm(folder; recursive = true); #hide","category":"page"},{"location":"how_to/serialize_data/","page":"...write and read data with a JSON","title":"...write and read data with a JSON","text":"tip: Tip\nPowerSystems generates UUIDs for the System and all components in order to have a way to uniquely identify objects. During deserialization it restores the same UUIDs. If you will modify the System or components after deserialization then it is recommended that you set this flag to generate new UUIDs.system2 = System(path; assign_new_uuids = true)","category":"page"},{"location":"model_library/generated_TransmissionInterface/#TransmissionInterface","page":"TransmissionInterface","title":"TransmissionInterface","text":"","category":"section"},{"location":"model_library/generated_TransmissionInterface/","page":"TransmissionInterface","title":"TransmissionInterface","text":"Modules = [PowerSystems]\nPages = [\"generated/TransmissionInterface.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.TransmissionInterface","page":"TransmissionInterface","title":"PowerSystems.TransmissionInterface","text":"mutable struct TransmissionInterface <: Service\n name::String\n available::Bool\n active_power_flow_limits::MinMax\n violation_penalty::Float64\n direction_mapping::Dict{String, Int}\n internal::InfrastructureSystemsInternal\nend\n\nA collection of branches that make up an interface or corridor for the transfer of power, such as between different Areas or LoadZones.\n\nThe interface can be used to constrain the power flow across it\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nactive_power_flow_limits::MinMax: Minimum and maximum active power flow limits on the interface (MW)\nviolation_penalty::Float64: (default: INFINITE_COST) Penalty cost for violating the flow limits in the interface\ndirection_mapping::Dict{String, Int}: (default: Dict{String, Int}()) Dictionary of the line names in the interface and their direction of flow (1 or -1) relative to the flow of the interface\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TransmissionInterface/#InfrastructureSystems.get_name-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"InfrastructureSystems.get_name","text":"get_name(value::TransmissionInterface) -> String\n\n\nGet TransmissionInterface name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_active_power_flow_limits-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_active_power_flow_limits","text":"get_active_power_flow_limits(\n value::TransmissionInterface\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TransmissionInterface active_power_flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_available-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_available","text":"get_available(value::TransmissionInterface) -> Bool\n\n\nGet TransmissionInterface available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_direction_mapping-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_direction_mapping","text":"get_direction_mapping(\n value::TransmissionInterface\n) -> Dict{String, Int64}\n\n\nGet TransmissionInterface direction_mapping.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_violation_penalty-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_violation_penalty","text":"get_violation_penalty(\n value::TransmissionInterface\n) -> Float64\n\n\nGet TransmissionInterface violation_penalty.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_active_power_flow_limits!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_active_power_flow_limits!","text":"set_active_power_flow_limits!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface active_power_flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_available!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_available!","text":"set_available!(value::TransmissionInterface, val) -> Any\n\n\nSet TransmissionInterface available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_direction_mapping!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_direction_mapping!","text":"set_direction_mapping!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface direction_mapping.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_violation_penalty!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_violation_penalty!","text":"set_violation_penalty!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface violation_penalty.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#SingleCageInductionMachine","page":"SingleCageInductionMachine","title":"SingleCageInductionMachine","text":"","category":"section"},{"location":"model_library/generated_SingleCageInductionMachine/","page":"SingleCageInductionMachine","title":"SingleCageInductionMachine","text":"Modules = [PowerSystems]\nPages = [\"generated/SingleCageInductionMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.SingleCageInductionMachine","page":"SingleCageInductionMachine","title":"PowerSystems.SingleCageInductionMachine","text":"mutable struct SingleCageInductionMachine <: DynamicInjection\n name::String\n R_s::Float64\n R_r::Float64\n X_ls::Float64\n X_lr::Float64\n X_m::Float64\n H::Float64\n A::Float64\n B::Float64\n base_power::Float64\n ext::Dict{String, Any}\n C::Float64\n τ_ref::Float64\n B_shunt::Float64\n X_ad::Float64\n X_aq::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 5-states three-phase single cage induction machine with quadratic torque-speed relationship\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\nR_s::Float64: Armature stator resistance, validation range: (0, nothing)\nR_r::Float64: Rotor resistance, validation range: (0, nothing)\nX_ls::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nX_lr::Float64: Rotor Leakage Reactance, validation range: (0, nothing)\nX_m::Float64: Stator-Rotor Mutual Reactance, validation range: (0, nothing)\nH::Float64: Motor Inertia Constant [s], validation range: (0, nothing)\nA::Float64: Torque-Speed Quadratic Term, validation range: (0, 1)\nB::Float64: Torque-Speed Linear Term, validation range: (0, 1)\nbase_power::Float64: Base power of the unit (MVA) for per unitization, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nC::Float64: (Do not modify.) Torque-Speed Constant Term\nτ_ref::Float64: Reference torque parameter\nB_shunt::Float64: Susceptance Initialization Corrector Term\nX_ad::Float64: (Do not modify.) Equivalent d-axis reactance\nX_aq::Float64: (Do not modify.) Equivalent q-axis reactance\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nψ_qs: stator flux in the q-axis,\nψ_ds: stator flux in the d-axis,\nψ_qr: rotor flux in the q-axis,\nψ_dr: rotor flux in the d-axis, \nωr: Rotor speed [pu],\n\nn_states::Int: (Do not modify.) SingleCageInductionMachine has 5 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_SingleCageInductionMachine/#InfrastructureSystems.get_name-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"InfrastructureSystems.get_name","text":"get_name(value::SingleCageInductionMachine) -> String\n\n\nGet SingleCageInductionMachine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_A-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_A","text":"get_A(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine A.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_B-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_B","text":"get_B(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine B.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_B_shunt-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_B_shunt","text":"get_B_shunt(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine B_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_C-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_C","text":"get_C(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine C.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_H-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_H","text":"get_H(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_R_r-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_R_r","text":"get_R_r(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine R_r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_R_s-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_R_s","text":"get_R_s(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine R_s.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_X_ad-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_X_ad","text":"get_X_ad(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine X_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_X_aq-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_X_aq","text":"get_X_aq(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine X_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_X_lr-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_X_lr","text":"get_X_lr(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine X_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_X_ls-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_X_ls","text":"get_X_ls(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine X_ls.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_X_m-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_X_m","text":"get_X_m(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine X_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_base_power-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_base_power","text":"get_base_power(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_ext-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_ext","text":"get_ext(\n value::SingleCageInductionMachine\n) -> Dict{String, Any}\n\n\nGet SingleCageInductionMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_n_states-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SingleCageInductionMachine) -> Int64\n\n\nGet SingleCageInductionMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_states-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_states","text":"get_states(\n value::SingleCageInductionMachine\n) -> Vector{Symbol}\n\n\nGet SingleCageInductionMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.get_τ_ref-Tuple{SingleCageInductionMachine}","page":"SingleCageInductionMachine","title":"PowerSystems.get_τ_ref","text":"get_τ_ref(value::SingleCageInductionMachine) -> Float64\n\n\nGet SingleCageInductionMachine τ_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_A!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_A!","text":"set_A!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine A.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_B!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_B!","text":"set_B!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine B.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_B_shunt!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_B_shunt!","text":"set_B_shunt!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine B_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_C!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_C!","text":"set_C!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine C.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_H!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_H!","text":"set_H!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_R_r!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_R_r!","text":"set_R_r!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine R_r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_R_s!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_R_s!","text":"set_R_s!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine R_s.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_X_ad!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_X_ad!","text":"set_X_ad!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine X_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_X_aq!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_X_aq!","text":"set_X_aq!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine X_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_X_lr!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_X_lr!","text":"set_X_lr!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine X_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_X_ls!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_X_ls!","text":"set_X_ls!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine X_ls.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_X_m!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_X_m!","text":"set_X_m!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine X_m.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_base_power!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_base_power!","text":"set_base_power!(\n value::SingleCageInductionMachine,\n val\n) -> Any\n\n\nSet SingleCageInductionMachine base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_ext!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SingleCageInductionMachine/#PowerSystems.set_τ_ref!-Tuple{SingleCageInductionMachine, Any}","page":"SingleCageInductionMachine","title":"PowerSystems.set_τ_ref!","text":"set_τ_ref!(value::SingleCageInductionMachine, val) -> Any\n\n\nSet SingleCageInductionMachine τ_ref.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/","page":"Internals","title":"Internals","text":"CollapsedDocStrings = true","category":"page"},{"location":"api/internal/#Internal-API","page":"Internals","title":"Internal API","text":"","category":"section"},{"location":"api/internal/","page":"Internals","title":"Internals","text":"Modules = [PowerSystems]\nPublic = false","category":"page"},{"location":"api/internal/#PowerSystems._pti_dtypes","page":"Internals","title":"PowerSystems._pti_dtypes","text":"lookup array of data types for PTI file sections given by field_name, as enumerated by PSS/E Program Operation Manual.\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems._pti_sections","page":"Internals","title":"PowerSystems._pti_sections","text":"A list of data file sections in the order that they appear in a PTI v33 file\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.pm_component_status","page":"Internals","title":"PowerSystems.pm_component_status","text":"maps component types to status parameters\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.pm_component_status_inactive","page":"Internals","title":"PowerSystems.pm_component_status_inactive","text":"maps component types to inactive status values\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.EX4VSA","page":"Internals","title":"PowerSystems.EX4VSA","text":"mutable struct EX4VSA <: AVR\n Iflim::Float64\n d::Float64\n f::Float64\n Spar::Float64\n K1::Float64\n K2::Float64\n Oel_lim::MinMax\n G::Float64\n Ta::Float64\n Tb::Float64\n Te::Float64\n E_lim::MinMax\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Excitation System for Voltage Security Assesment\n\nArguments\n\nIflim::Float64: OEL Field current limit, validation range: (0, nothing)\nd::Float64: OEL parameter d, validation range: (0, nothing)\nf::Float64: OEL parameter f, validation range: (0, nothing)\nSpar::Float64: OEL parameter Spar, validation range: (0, nothing)\nK1::Float64: OEL delay time constant, validation range: (0, nothing)\nK2::Float64: OEL parameter K2, validation range: (0, nothing)\nOel_lim::MinMax: Oel integrator limits (Oelmin, Oelmax)\nG::Float64: AVR Exciter Gain, validation range: (0, nothing)\nTa::Float64: Numerator lead-lag (lag) time constant in s, validation range: (0, nothing)\nTb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing)\nTe::Float64: Exciter Time Constant in s, validation range: (0, nothing)\nE_lim::MinMax: Voltage regulator limits (regulator output) (Emin, Emax)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVll: Lead-lag internal state,\nVex: Exciter Output, \noel: OEL integrator state\n\nn_states::Int: (Do not modify.) The EX4VSA has 3 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.EXST1","page":"Internals","title":"PowerSystems.EXST1","text":"mutable struct EXST1 <: AVR\n Tr::Float64\n Vi_lim::MinMax\n Tc::Float64\n Tb::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Kc::Float64\n Kf::Float64\n Tf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Type ST1 Excitation System (PTI version)\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)\nVi_lim::MinMax: Voltage input limits (Vimin, Vimax)\nTc::Float64: Numerator lead-lag (lead) time constant in s, validation range: (0, nothing)\nTb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing)\nKa::Float64: Amplifier Gain, validation range: (0, nothing)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, nothing)\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vrmin, Vrmax)\nKc::Float64: Current field constant limiter multiplier, validation range: (0, nothing)\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3)\nTf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing)\nV_ref::Float64: (default: 1.0) Reference Voltage Set-point (pu), validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states are:\n\nVm: Sensed Terminal Voltage,\nVrll: Lead-Lag state,\nVr: Regulator Output, \nVfb: Feedback state\n\nn_states::Int: (Do not modify.) The EXST1 has 4 states\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.PowerFlowDataNetwork","page":"Internals","title":"PowerSystems.PowerFlowDataNetwork","text":"Container for data parsed by PowerFlowData\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.PowerFlowDataNetwork-Tuple{Union{IO, String}}","page":"Internals","title":"PowerSystems.PowerFlowDataNetwork","text":"PowerFlowDataNetwork(\n file::Union{IO, String};\n kwargs...\n) -> PowerSystems.PowerFlowDataNetwork\n\n\nConstructs PowerFlowDataNetwork from a raw file. Currently Supports PSSE data files v30, v32 and v33\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._FieldInfo","page":"Internals","title":"PowerSystems._FieldInfo","text":"Stores user-customized information for required dataframe columns.\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems._HeatRateColumns","page":"Internals","title":"PowerSystems._HeatRateColumns","text":"Add generators to the System from the raw data.\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#Base.convert-Tuple{Type{@NamedTuple{min::Float64, max::Float64}}, Tuple{Float64, Float64}}","page":"Internals","title":"Base.convert","text":"convert(\n _::Type{@NamedTuple{min::Float64, max::Float64}},\n input::Tuple{Float64, Float64}\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nConvert Tuple to Min Max Named Tuple\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#Base.convert-Tuple{Type{@NamedTuple{up::Float64, down::Float64}}, Tuple{Float64, Float64}}","page":"Internals","title":"Base.convert","text":"convert(\n _::Type{@NamedTuple{up::Float64, down::Float64}},\n input::Tuple{Float64, Float64}\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nConvert Tuple to Up Down Named Tuple\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.assign_new_uuid!-Tuple{System, Component}","page":"Internals","title":"InfrastructureSystems.assign_new_uuid!","text":"assign_new_uuid!(sys::System, x::Component)\n\n\nChange the UUID of a component.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ACBus}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ACBus\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ACBus internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AGC}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AGC\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AGC internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRFixed}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRSimple}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRSimple\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRSimple internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRTypeII}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRTypeII\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRTypeII internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRTypeI}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRTypeI\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRTypeI internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ActiveConstantPowerLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ActiveConstantPowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ActiveConstantPowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AggregateDistributedGenerationA}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AggregateDistributedGenerationA\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AggregateDistributedGenerationA internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AndersonFouadMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AndersonFouadMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AndersonFouadMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Arc}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Arc\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Arc internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AreaInterchange}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AreaInterchange\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AreaInterchange internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Area}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Area\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Area internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{BaseMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::BaseMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet BaseMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{CSVGN1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::CSVGN1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet CSVGN1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ConstantReserveGroup}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ConstantReserveGroup\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ConstantReserveGroup internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ConstantReserveNonSpinning}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ConstantReserveNonSpinning\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ConstantReserveNonSpinning internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ConstantReserve}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ConstantReserve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ConstantReserve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DCBus}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DCBus\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DCBus internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DEGOV1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DEGOV1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DEGOV1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DEGOV}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DEGOV\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DEGOV internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DynamicBranch}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DynamicBranch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DynamicBranch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DynamicExponentialLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DynamicExponentialLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DynamicExponentialLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESAC1A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESAC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESAC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESAC6A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESAC6A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESAC6A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESAC8B}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESAC8B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESAC8B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESDC1A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESDC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESDC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESDC2A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESDC2A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESDC2A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESST1A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESST1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESST1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESST4B}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESST4B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESST4B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC1A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC2}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC2\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC2 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXPIC1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXPIC1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXPIC1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EnergyReservoirStorage}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EnergyReservoirStorage\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EnergyReservoirStorage internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ExponentialLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ExponentialLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ExponentialLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FiveMassShaft}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FiveMassShaft\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FiveMassShaft internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FixedAdmittance}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FixedAdmittance\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FixedAdmittance internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FixedDCSource}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FixedDCSource\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FixedDCSource internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FullMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FullMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FullMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GasTG}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GasTG\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GasTG internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GeneralGovModel}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GeneralGovModel\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GeneralGovModel internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GenericDER}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GenericDER\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GenericDER internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HybridSystem}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HybridSystem\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HybridSystem internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroDispatch}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroDispatch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroDispatch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroEnergyReservoir}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroEnergyReservoir\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroEnergyReservoir internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroPumpedStorage}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroPumpedStorage\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroPumpedStorage internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroTurbineGov}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroTurbineGov\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroTurbineGov internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEEST}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEEST\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEEST internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEET1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEET1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEET1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEETurbineGov1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEETurbineGov1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEETurbineGov1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{InterconnectingConverter}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InterconnectingConverter\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet InterconnectingConverter internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{InterruptiblePowerLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InterruptiblePowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet InterruptiblePowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Line}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Line\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Line internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{LoadZone}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::LoadZone\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet LoadZone internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{MarconatoMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::MarconatoMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet MarconatoMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{MonitoredLine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::MonitoredLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet MonitoredLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{OneDOneQMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::OneDOneQMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet OneDOneQMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Outage}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(x::Outage) -> Any\n\n\nGet internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PIDGOV}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PIDGOV\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PIDGOV internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2A}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2B}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2C}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2C\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2C internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSSFixed}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSSFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSSFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSSSimple}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSSSimple\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSSSimple internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PeriodicVariableSource}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PeriodicVariableSource\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PeriodicVariableSource internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PhaseShiftingTransformer}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PhaseShiftingTransformer\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PhaseShiftingTransformer internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.EX4VSA}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.EX4VSA\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EX4VSA internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.EXST1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.EXST1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXST1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RenewableDispatch}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RenewableDispatch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RenewableDispatch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RenewableNonDispatch}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RenewableNonDispatch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RenewableNonDispatch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ReserveDemandCurve}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ReserveDemandCurve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ReserveDemandCurve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RoundRotorMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RoundRotorMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RoundRotorMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SCRX}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SCRX\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SCRX internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SEXS}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SEXS\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SEXS internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ST6B}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ST6B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ST6B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ST8C}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ST8C\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ST8C internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{STAB1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::STAB1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet STAB1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SalientPoleMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SalientPoleMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SalientPoleMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SauerPaiMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SauerPaiMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SauerPaiMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleAFMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleAFMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleAFMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleFullMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleFullMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleFullMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleMarconatoMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleMarconatoMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleMarconatoMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimplifiedSingleCageInductionMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimplifiedSingleCageInductionMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimplifiedSingleCageInductionMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SingleCageInductionMachine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SingleCageInductionMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleCageInductionMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SingleMass}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SingleMass\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleMass internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Source}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Source\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Source internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{StandardLoad}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::StandardLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet StandardLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SteamTurbineGov1}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SteamTurbineGov1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SteamTurbineGov1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SwitchedAdmittance}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SwitchedAdmittance\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SwitchedAdmittance internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{System}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n sys::System\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nReturn the internal of the system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGFixed}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGSimple}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGSimple\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGSimple internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGTypeII}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGTypeII\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGTypeII internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGTypeI}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGTypeI\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGTypeI internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TModelHVDCLine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TModelHVDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TModelHVDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TapTransformer}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TapTransformer\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TapTransformer internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ThermalMultiStart}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ThermalMultiStart\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ThermalMultiStart internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ThermalStandard}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ThermalStandard\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ThermalStandard internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Transformer2W}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Transformer2W\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Transformer2W internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TransmissionInterface}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TransmissionInterface\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TransmissionInterface internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TwoTerminalHVDCLine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TwoTerminalHVDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TwoTerminalHVDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TwoTerminalVSCDCLine}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TwoTerminalVSCDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TwoTerminalVSCDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{VariableReserveNonSpinning}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::VariableReserveNonSpinning\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet VariableReserveNonSpinning internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{VariableReserve}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::VariableReserve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet VariableReserve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{WPIDHY}","page":"Internals","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::WPIDHY\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet WPIDHY internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._add_dcline_costs!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._add_dcline_costs!","text":"_add_dcline_costs!(data::Dict{String, Any})\n\n\nadds dcline costs, if gen costs exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._add_line_delimiter-Tuple{AbstractString, Any, Any}","page":"Internals","title":"PowerSystems._add_line_delimiter","text":"_add_line_delimiter(\n mp_line::AbstractString,\n start_char,\n end_char\n) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._apply_func!-Tuple{Dict{String}, String, Any}","page":"Internals","title":"PowerSystems._apply_func!","text":"_apply_func!(data::Dict{String}, key::String, func) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._biggest_generator-Tuple{Any}","page":"Internals","title":"PowerSystems._biggest_generator","text":"_biggest_generator(gens) -> Any\n\n\nfind the largest active generator in the network\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._bold-Tuple{String}","page":"Internals","title":"PowerSystems._bold","text":"_bold(s::String) -> String\n\n\nMakes a string bold in the terminal\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_branch_flow_ac-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._calc_branch_flow_ac","text":"_calc_branch_flow_ac(\n data::Dict{String}\n) -> Dict{String, Any}\n\n\nhelper function for calcbranchflow_ac\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_branch_flow_dc-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._calc_branch_flow_dc","text":"_calc_branch_flow_dc(\n data::Dict{String}\n) -> Dict{String, Any}\n\n\nhelper function for calcbranchflow_dc\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_comp_lines-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._calc_comp_lines","text":"_calc_comp_lines(component::Dict{String}) -> Vector{Any}\n\n\ncompute lines in m and b from from pwl cost models\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_max_cost_index-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._calc_max_cost_index","text":"_calc_max_cost_index(data::Dict{String}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_power_balance-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._calc_power_balance","text":"_calc_power_balance(data::Dict{String}) -> Dict{String, Any}\n\n\nhelper function for calcpowerbalance\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._cc_dfs-NTuple{4, Any}","page":"Internals","title":"PowerSystems._cc_dfs","text":"_cc_dfs(i, neighbors, component_lookup, touched)\n\n\nDFS on a graph\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._check_conductors-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._check_conductors","text":"_check_conductors(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._check_keys-Tuple{Any, Any}","page":"Internals","title":"PowerSystems._check_keys","text":"_check_keys(data, keys)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._compare_numbers-Tuple{Any, Any}","page":"Internals","title":"PowerSystems._compare_numbers","text":"_compare_numbers(v1, v2) -> Bool\n\n\ntests if two numbers are equal, up to floating point precision\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._convert_argument_types!-Tuple{AbstractString, Vector}","page":"Internals","title":"PowerSystems._convert_argument_types!","text":"_convert_argument_types!(\n str::AbstractString,\n struct_args::Vector\n) -> Any\n\n\nConvert specific parameters to types that are not Float64 for specific inverter components\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._convert_argument_types_for_gen!-Tuple{AbstractString, Vector}","page":"Internals","title":"PowerSystems._convert_argument_types_for_gen!","text":"_convert_argument_types_for_gen!(\n str::AbstractString,\n struct_args::Vector\n)\n\n\nConvert specific parameters to types that are not Float64 for specific generator components\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._correct_cost_function!-Tuple{Any, Any, Any}","page":"Internals","title":"PowerSystems._correct_cost_function!","text":"_correct_cost_function!(id, comp, type_name) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._correct_reference_buses!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._correct_reference_buses!","text":"_correct_reference_buses!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._create_starbus_from_transformer-Tuple{Dict, Dict, Int64}","page":"Internals","title":"PowerSystems._create_starbus_from_transformer","text":"_create_starbus_from_transformer(\n pm_data::Dict,\n transformer::Dict,\n starbus_id::Int64\n) -> Dict{String, Any}\n\n\ncreate_starbus(pm_data, transformer)\n\nCreates a starbus from a given three-winding transformer. \"sourceid\" is given by `[\"busi\", \"name\", \"I\", \"J\", \"K\", \"CKT\"]` where \"bus_i\" and \"name\" are the modified names for the starbus, and \"I\", \"J\", \"K\" and \"CKT\" come from the originating transformer, in the PSS(R)E transformer specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._deactivate_isolated_components!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._deactivate_isolated_components!","text":"_deactivate_isolated_components!(data::Dict{String}) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._extract_matlab_assignment-Tuple{AbstractString}","page":"Internals","title":"PowerSystems._extract_matlab_assignment","text":"_extract_matlab_assignment(\n string::AbstractString\n) -> Tuple{SubString, SubString}\n\n\nbreaks up matlab strings of the form 'name = value;'\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._find_max_bus_id-Tuple{Dict}","page":"Internals","title":"PowerSystems._find_max_bus_id","text":"_find_max_bus_id(pm_data::Dict) -> Int64\n\n\n_find_max_bus_id(pm_data)\n\nReturns the maximum bus id in pm_data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._float2string-Tuple{AbstractFloat, Int64}","page":"Internals","title":"PowerSystems._float2string","text":"_float2string(\n v::AbstractFloat,\n float_precision::Int64\n) -> Union{String, WeakRefStrings.PosLenString}\n\n\nconverts a float value into a string of fixed precision\n\nsprintf would do the job but this work around is needed because sprintf cannot take format strings during runtime\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_bus_value-Tuple{Int64, String, Dict{String, Any}}","page":"Internals","title":"PowerSystems._get_bus_value","text":"_get_bus_value(\n bus_i::Int64,\n field::String,\n pm_data::Dict{String, Any}\n) -> Any\n\n\n_get_bus_value(bus_i, field, pm_data)\n\nReturns the value of field of bus_i from the PowerModels data. Requires \"bus\" Dict to already be populated.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_contributing_devices-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Internals","title":"PowerSystems._get_contributing_devices","text":"_get_contributing_devices(\n sys::System,\n service::Service\n) -> ServiceContributingDevices\n\n\nReturns a ServiceContributingDevices object.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_line_elements-Tuple{AbstractString}","page":"Internals","title":"PowerSystems._get_line_elements","text":"_get_line_elements(\n line::AbstractString\n) -> Tuple{Vector{T} where T<:SubString, Union{String, SubString}}\n\n\n_get_line_elements(line)\n\nInternal function. Uses regular expressions to extract all separate data elements from a line of a PTI file and populate them into an Array{String}. Comments, typically indicated at the end of a line with a '/' character, are also extracted separately, and Array{Array{String}, String} is returned.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_pm_branch_name-Tuple{Any, ACBus, ACBus}","page":"Internals","title":"PowerSystems._get_pm_branch_name","text":"_get_pm_branch_name(\n device_dict,\n bus_f::ACBus,\n bus_t::ACBus\n) -> String\n\n\nInternal branch name retreval from pm2ps_dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_pm_dict_name-Tuple{Dict}","page":"Internals","title":"PowerSystems._get_pm_dict_name","text":"_get_pm_dict_name(device_dict::Dict) -> String\n\n\nInternal component name retreval from pm2ps_dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._grey-Tuple{String}","page":"Internals","title":"PowerSystems._grey","text":"_grey(s::String) -> String\n\n\nMakes a string grey in the terminal, does not seem to work well on Windows terminals more info can be found at https://en.wikipedia.org/wiki/ANSIescapecode\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._import_remaining_comps!-Tuple{Dict, Dict}","page":"Internals","title":"PowerSystems._import_remaining_comps!","text":"_import_remaining_comps!(\n data_out::Dict,\n data_in::Dict;\n exclude\n)\n\n\nImports remaining top level component lists from data_in into data_out, excluding keys in exclude\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._import_remaining_keys!-Tuple{Dict, Dict}","page":"Internals","title":"PowerSystems._import_remaining_keys!","text":"_import_remaining_keys!(\n comp_dest::Dict,\n comp_src::Dict;\n exclude\n)\n\n\nImports remaining keys from a source component into detestation component, excluding keys in exclude\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._init_bus!-Tuple{Dict{String, Any}, Int64}","page":"Internals","title":"PowerSystems._init_bus!","text":"_init_bus!(bus::Dict{String, Any}, id::Int64)\n\n\n_init_bus!(bus, id)\n\nInitializes a bus of id id with default values given in the PSS(R)E specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._instantiate_param_vector_size-Tuple{AbstractString, Dict}","page":"Internals","title":"PowerSystems._instantiate_param_vector_size","text":"_instantiate_param_vector_size(\n str::AbstractString,\n param_map::Dict\n) -> Any\n\n\nConstruct appropiate vector size for components that collect parameters from more than 2 PSS/E components\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_market_bid_curve-Tuple{PiecewiseStepData}","page":"Internals","title":"PowerSystems._make_market_bid_curve","text":"_make_market_bid_curve(\n data::PiecewiseStepData;\n initial_input,\n power_units,\n input_at_zero\n) -> CostCurve{PiecewiseIncrementalCurve}\n\n\nAuxiliary make market bid curve for timeseries with nothing inputs. \n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_mixed_units!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._make_mixed_units!","text":"_make_mixed_units!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_per_unit!-Tuple{Dict{String}, Real}","page":"Internals","title":"PowerSystems._make_per_unit!","text":"_make_per_unit!(data::Dict{String}, mva_base::Real)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_shaft-Tuple{Any, Any}","page":"Internals","title":"PowerSystems._make_shaft","text":"_make_shaft(param_map, val) -> Any\n\n\nCreate a SingleMass shaft struct directly using the parameter mapping.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._matpower_to_powermodels!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._matpower_to_powermodels!","text":"_matpower_to_powermodels!(\n mp_data::Dict{String}\n) -> Dict{String}\n\n\nConverts a Matpower dict into a PowerModels dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_bus_name_data!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._merge_bus_name_data!","text":"_merge_bus_name_data!(\n data::Dict{String, Any}\n) -> Union{Nothing, Dict{String, Any}}\n\n\nmerges bus name data into buses, if names exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_cost_data!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._merge_cost_data!","text":"_merge_cost_data!(\n data::Dict{String, Any}\n) -> Union{Nothing, Dict{String, Any}}\n\n\nmerges generator cost functions into generator data, if costs exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_generic_data!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._merge_generic_data!","text":"_merge_generic_data!(data::Dict{String, Any})\n\n\nmerges Matpower tables based on the table extension syntax\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp2pm_branch!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._mp2pm_branch!","text":"_mp2pm_branch!(data::Dict{String, Any})\n\n\nsets all branch transformer taps to 1.0, to simplify branch models\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp2pm_dcline!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._mp2pm_dcline!","text":"_mp2pm_dcline!(data::Dict{String, Any})\n\n\nadds pmin and pmax values at to and from buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp_cost_data-Tuple{Any}","page":"Internals","title":"PowerSystems._mp_cost_data","text":"_mp_cost_data(cost_row) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dera1!-Tuple{Any, Any, Any, Dict, Int64}","page":"Internals","title":"PowerSystems._parse_dera1!","text":"_parse_dera1!(\n bus_dict,\n componentID,\n componentValues,\n param_map::Dict,\n bus_num::Int64\n)\n\n\nParse dictionary of data (from _parse_dyr_file) into a dictionary of DERA1. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each DERA1 indexed by its id.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_components-Tuple{AbstractString}","page":"Internals","title":"PowerSystems._parse_dyr_components","text":"_parse_dyr_components(\n dyr_file::AbstractString\n) -> Dict{Int64, Any}\n\n\nParse a .dyr file directly from its name by constructing its dictionary of dictionaries.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_components-Tuple{Dict}","page":"Internals","title":"PowerSystems._parse_dyr_components","text":"_parse_dyr_components(data::Dict) -> Dict{Int64, Any}\n\n\nParse dictionary of dictionaries of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator and dynamic inverter components (indexed via its id).\n\nFor Generators, each dictionary indexed by id contains a vector with 5 of its components:\n\nMachine\nShaft\nAVR\nTurbineGov\nPSS\n\nFor Inverters, each dictionary indexed by id contains a vector with 7 of its components:\n\nConverter\nActivePowerControl\nReactivePowerControl\nInnerControl\nDCSource\nFrequencyEstimator\nFilter\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_file-Tuple{AbstractString}","page":"Internals","title":"PowerSystems._parse_dyr_file","text":"_parse_dyr_file(file::AbstractString) -> Dict{Int64, Dict}\n\n\nParse .dyr file into a dictionary indexed by bus number. Each bus number key has a dictionary indexed by component type and id.\n\nComments in .dyr files are not supported (beginning of lines with //).\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_generator_components!-Tuple{Dict, Any, Any, Dict, Dict}","page":"Internals","title":"PowerSystems._parse_dyr_generator_components!","text":"_parse_dyr_generator_components!(\n bus_dict::Dict,\n componentID,\n componentValues,\n gen_map::Dict,\n param_map::Dict\n)\n\n\nParse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator indexed by its id.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_inverter_components!-Tuple{Dict, Dict, Tuple{String, String}, Dict}","page":"Internals","title":"PowerSystems._parse_dyr_inverter_components!","text":"_parse_dyr_inverter_components!(\n bus_dict::Dict,\n inv_dict::Dict,\n componentID::Tuple{String, String},\n inv_map::Dict\n)\n\n\nParse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic inverter indexed by its id.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_elements-Tuple{Array, Array, Dict, AbstractString}","page":"Internals","title":"PowerSystems._parse_elements","text":"_parse_elements(\n elements::Array,\n dtypes::Array,\n defaults::Dict,\n section::AbstractString\n) -> Dict{String, Any}\n\n\nThis is an experimental method for parsing elements and setting defaults at the same time. It is not currently working but would reduce memory allocations if implemented correctly.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_line_element!-Tuple{Dict, Array, AbstractString}","page":"Internals","title":"PowerSystems._parse_line_element!","text":"_parse_line_element!(\n data::Dict,\n elements::Array,\n section::AbstractString\n)\n\n\n_parse_line_element!(data, elements, section)\n\nInternal function. Parses a single \"line\" of data elements from a PTI file, as given by elements which is an array of the line, typically split at ,. Elements are parsed into data types given by section and saved into data::Dict.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_cells-Tuple{Any, Any}","page":"Internals","title":"PowerSystems._parse_matlab_cells","text":"_parse_matlab_cells(lines, index) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_data-NTuple{4, Any}","page":"Internals","title":"PowerSystems._parse_matlab_data","text":"_parse_matlab_data(\n lines,\n index,\n start_char,\n end_char\n) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_matrix-Tuple{Any, Any}","page":"Internals","title":"PowerSystems._parse_matlab_matrix","text":"_parse_matlab_matrix(lines, index) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matpower_string-Tuple{String}","page":"Internals","title":"PowerSystems._parse_matpower_string","text":"_parse_matpower_string(\n data_string::String\n) -> Dict{String, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_pti_data-Tuple{IO}","page":"Internals","title":"PowerSystems._parse_pti_data","text":"_parse_pti_data(data_io::IO) -> Dict{String, Array{Dict}}\n\n\n_parse_pti_data(data_string, sections)\n\nInternal function. Parse a PTI raw file into a Dict, given the data_string of the file and a list of the sections in the PTI file (typically given by default by get_pti_sections().\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._populate_args-Tuple{Vector, Any}","page":"Internals","title":"PowerSystems._populate_args","text":"_populate_args(param_map::Vector, val) -> Vector{Any}\n\n\nPopulate arguments in a vector for each dynamic component (except Shafts). Returns a vector with the parameter values of the argument of each component.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._populate_defaults!-Tuple{Dict}","page":"Internals","title":"PowerSystems._populate_defaults!","text":"_populate_defaults!(data::Dict)\n\n\n_populate_defaults!(pti_data)\n\nInternal function. Populates empty fields with PSS(R)E PTI v33 default values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._process_get_cost-Union{Tuple{T}, Tuple{Type{T}, Any, T, Any, Union{Nothing, Dates.DateTime}, Union{Nothing, Int64}}} where T","page":"Internals","title":"PowerSystems._process_get_cost","text":"_process_get_cost(\n _::Type{T},\n _,\n cost,\n transform_fn,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64}\n) -> TimeSeries.TimeArray\n\n\nHelper function for cost getters.\n\nArguments\n\nT: type/eltype we expect\ncomponent::Component: the component\ncost: the data: either a single element of type T or a TimeSeriesKey\ntransform_fn: a function to apply to the elements of the time series\nstart_time: as in get_time_series\nlen: as in get_time_series\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._process_set_cost-Tuple{Any, Any, Any, Any, Nothing}","page":"Internals","title":"PowerSystems._process_set_cost","text":"_process_set_cost(_, _, _, _, _::Nothing)\n\n\nHelper function for cost setters.\n\nArguments\n\nT1: type we expect if it's not a time series\nT2: eltype we expect if it is a time series\nsys::System: the system\ncomponent::Component: the component\ncost: the data: either a single element of type T1 or a IS.TimeSeriesData of eltype T2\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._propagate_topology_status!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._propagate_topology_status!","text":"_propagate_topology_status!(data::Dict{String}) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_branch!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_branch!","text":"_psse2pm_branch!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_branch!(pm_data, pti_data)\n\nParses PSS(R)E-style Branch data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"J\", \"CKT\"] in PSS(R)E Branch specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_bus!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_bus!","text":"_psse2pm_bus!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_bus!(pm_data, pti_data)\n\nParses PSS(R)E-style Bus data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"NAME\"] in PSS(R)E Bus specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_dcline!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_dcline!","text":"_psse2pm_dcline!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_dcline!(pm_data, pti_data)\n\nParses PSS(R)E-style Two-Terminal and VSC DC Lines data into a PowerModels compatible Dict structure by first converting them to a simple DC Line Model. For Two-Terminal DC lines, \"sourceid\" is given by [\"IPR\", \"IPI\", \"NAME\"] in the PSS(R)E Two-Terminal DC specification. For Voltage Source Converters, \"sourceid\" is given by [\"IBUS1\", \"IBUS2\", \"NAME\"], where \"IBUS1\" is \"IBUS\" of the first converter bus, and \"IBUS2\" is the \"IBUS\" of the second converter bus, in the PSS(R)E Voltage Source Converter specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_generator!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_generator!","text":"_psse2pm_generator!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n) -> Union{Nothing, Vector{Dict{String, Any}}}\n\n\n_psse2pm_generator!(pm_data, pti_data)\n\nParses PSS(R)E-style Generator data in a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] in PSS(R)E Generator specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_load!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_load!","text":"_psse2pm_load!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_load!(pm_data, pti_data)\n\nParses PSS(R)E-style Load data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] in the PSS(R)E Load specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_shunt!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_shunt!","text":"_psse2pm_shunt!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_shunt!(pm_data, pti_data)\n\nParses PSS(R)E-style Fixed and Switched Shunt data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] for Fixed Shunts, and [\"I\", \"SWREM\"] for Switched Shunts, as given by the PSS(R)E Fixed and Switched Shunts specifications.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_transformer!-Tuple{Dict, Dict, Bool}","page":"Internals","title":"PowerSystems._psse2pm_transformer!","text":"_psse2pm_transformer!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_transformer!(pm_data, pti_data)\n\nParses PSS(R)E-style Transformer data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"J\", \"K\", \"CKT\", \"winding\"], where \"winding\" is 0 if transformer is two-winding, and 1, 2, or 3 for three-winding, and the remaining keys are defined in the PSS(R)E Transformer specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._pti_to_powermodels!-Tuple{Dict}","page":"Internals","title":"PowerSystems._pti_to_powermodels!","text":"_pti_to_powermodels!(\n pti_data::Dict;\n import_all,\n validate,\n correct_branch_rating\n) -> Dict{String, Any}\n\n\n_pti_to_powermodels!(pti_data)\n\nConverts PSS(R)E-style data parsed from a PTI raw file, passed by pti_data into a format suitable for use internally in PowerModels. Imports all remaining data from the PTI file if import_all is true (Default: false).\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._read_data_row-Tuple{PowerSystemTableData, Any, Any}","page":"Internals","title":"PowerSystems._read_data_row","text":"_read_data_row(\n data::PowerSystemTableData,\n row,\n field_infos;\n na_to_nothing\n) -> NamedTuple\n\n\nReads values from dataframe row and performs necessary conversions.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._remove_aggregration_topology!-Tuple{ACBus, LoadZone}","page":"Internals","title":"PowerSystems._remove_aggregration_topology!","text":"_remove_aggregration_topology!(bus::ACBus, _::LoadZone)\n\n\nRemove the aggregation topology in a ACBus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._remove_pwl_cost_duplicates!","page":"Internals","title":"PowerSystems._remove_pwl_cost_duplicates!","text":"_remove_pwl_cost_duplicates!(id, comp, type_name) -> Bool\n_remove_pwl_cost_duplicates!(\n id,\n comp,\n type_name,\n tolerance\n) -> Bool\n\n\nchecks that each point in the a pwl function is unique, simplifies the function if duplicates appear\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems._remove_service!-Tuple{Device, Service}","page":"Internals","title":"PowerSystems._remove_service!","text":"_remove_service!(device::Device, service::Service) -> Bool\n\n\nRemove service from device if it is attached.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._rescale_cost_model!-Tuple{Dict{String}, Real}","page":"Internals","title":"PowerSystems._rescale_cost_model!","text":"_rescale_cost_model!(comp::Dict{String}, scale::Real)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._resolve_swithces!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._resolve_swithces!","text":"_resolve_swithces!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._select_largest_component!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems._select_largest_component!","text":"_select_largest_component!(data::Dict{String}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._simplify_pwl_cost!","page":"Internals","title":"PowerSystems._simplify_pwl_cost!","text":"_simplify_pwl_cost!(id, comp, type_name) -> Bool\n_simplify_pwl_cost!(id, comp, type_name, tolerance) -> Bool\n\n\nchecks the slope of each segment in a pwl function, simplifies the function if the slope changes is below a tolerance\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems._split_loads_shunts!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems._split_loads_shunts!","text":"_split_loads_shunts!(data::Dict{String, Any})\n\n\n_split_loads_shunts!(data)\n\nSeperates Loads and Shunts in data under separate \"load\" and \"shunt\" keys in the PowerModels data format. Includes references to originating bus via \"loadbus\" and \"shuntbus\" keys, respectively.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._standardize_cost_terms!-Tuple{Dict{String}, Int64, String}","page":"Internals","title":"PowerSystems._standardize_cost_terms!","text":"_standardize_cost_terms!(\n components::Dict{String},\n comp_order::Int64,\n cost_comp_name::String\n) -> Set{Int64}\n\n\nensures all polynomial costs functions have at exactly comp_order terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._type_array-Union{Tuple{Vector{T}}, Tuple{T}} where T<:AbstractString","page":"Internals","title":"PowerSystems._type_array","text":"_type_array(\n string_array::Array{T<:AbstractString, 1}\n) -> Vector\n\n\nAttempts to determine the type of an array of strings extracted from a matlab file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._type_value-Tuple{AbstractString}","page":"Internals","title":"PowerSystems._type_value","text":"_type_value(value_string::AbstractString) -> Any\n\n\nAttempts to determine the type of a string extracted from a matlab file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._update_data!-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems._update_data!","text":"_update_data!(data::Dict{String}, new_data::Dict{String})\n\n\nrecursive call of updatedata\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._value2string-Tuple{Any, Int64}","page":"Internals","title":"PowerSystems._value2string","text":"_value2string(v, float_precision::Int64) -> Any\n\n\nconverts any value to a string, summarizes arrays and dicts\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.add_service_internal!-Tuple{Device, Service}","page":"Internals","title":"PowerSystems.add_service_internal!","text":"add_service_internal!(device::Device, service::Service)\n\n\nThis function add a service to the component without checking if the component and the service are attached to the same system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.adequacy_check-Tuple{System}","page":"Internals","title":"PowerSystems.adequacy_check","text":"adequacy_check(sys::System)\n\n\nadequacy_check(sys::System)\n\nChecks the system for sum(generator ratings) >= sum(load ratings).\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.arrays_to_dicts!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.arrays_to_dicts!","text":"arrays_to_dicts!(data::Dict{String})\n\n\nturns top level arrays into dicts\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.branch_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.branch_csv_parser!","text":"branch_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nAdd branches to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.bus_csv_parser!","text":"bus_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nAdd buses and areas to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_gen_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems.bus_gen_lookup","text":"bus_gen_lookup(\n gen_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what generators are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_load_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems.bus_load_lookup","text":"bus_load_lookup(\n load_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what loads are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_shunt_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems.bus_shunt_lookup","text":"bus_shunt_lookup(\n shunt_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what shunts are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_storage_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems.bus_storage_lookup","text":"bus_storage_lookup(\n storage_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what storage is connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_flow_ac-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_branch_flow_ac","text":"calc_branch_flow_ac(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild ac solution is included in the data and computes the branch flow values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_flow_dc-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_branch_flow_dc","text":"calc_branch_flow_dc(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild dc solution is included in the data and computes the branch flow values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_t-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_branch_t","text":"calc_branch_t(branch::Dict{String}) -> Tuple{Any, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_y-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_branch_y","text":"calc_branch_y(branch::Dict{String}) -> Tuple{Any, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_connected_components-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_connected_components","text":"calc_connected_components(\n pm_data::Dict{String};\n edges\n) -> Set{Set{Int64}}\n\n\ncomputes the connected components of the network graph returns a set of sets of bus ids, each set is a connected component\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_cost_pwl_lines-Tuple{Dict}","page":"Internals","title":"PowerSystems.calc_cost_pwl_lines","text":"calc_cost_pwl_lines(comp_dict::Dict) -> Dict{Any, Any}\n\n\ncompute lines in m and b from from pwl cost models data is a list of components.\n\nCan be run on data or ref data structures\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_dcline_cost-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_dcline_cost","text":"calc_dcline_cost(data::Dict{String}) -> Any\n\n\ncomputes the dcline cost from given network data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_gen_cost-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_gen_cost","text":"calc_gen_cost(data::Dict{String}) -> Any\n\n\ncomputes the generator cost from given network data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_max_cost_index-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.calc_max_cost_index","text":"calc_max_cost_index(data::Dict{String, Any}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_power_balance-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_power_balance","text":"calc_power_balance(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild solution is included in the data and computes the power balance at each bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_theta_delta_bounds-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.calc_theta_delta_bounds","text":"calc_theta_delta_bounds(\n data::Dict{String}\n) -> Tuple{Real, Real}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calculate_saturation_coefficients-Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}","page":"Internals","title":"PowerSystems.calculate_saturation_coefficients","text":"calculate_saturation_coefficients(\n E::Tuple{Float64, Float64},\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se(x) = B(x - A)^2/x for Se(E1) = B(E1 - A)^2/E1 and Se(E2) = B(E2 - A)^2/E2 and uses the negative solution of the quadratic equation \n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_ascending_order-Tuple{Array{Int64}, AbstractString}","page":"Internals","title":"PowerSystems.check_ascending_order","text":"check_ascending_order(\n array::Array{Int64},\n name::AbstractString\n)\n\n\nThrows DataFormatError if the array is not in ascending order.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_attached_buses-Tuple{System, Component}","page":"Internals","title":"PowerSystems.check_attached_buses","text":"check_attached_buses(sys::System, component::Component)\n\n\nThrows ArgumentError if any bus attached to the component is invalid.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_branch_loops-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_branch_loops","text":"check_branch_loops(data::Dict{String})\n\n\nchecks that all branches connect two distinct buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_addition-Tuple{System, Component}","page":"Internals","title":"PowerSystems.check_component_addition","text":"check_component_addition(\n sys::System,\n component::Component;\n kwargs...\n)\n\n\nThrows ArgumentError if a PowerSystems rule blocks addition to the system.\n\nThis method is tied with handlecomponentaddition!. If the methods are re-implemented for a subtype then whatever is added in handlecomponentaddition! must be checked here.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_removal-Tuple{System, Component}","page":"Internals","title":"PowerSystems.check_component_removal","text":"check_component_removal(sys::System, component::Component)\n\n\nThrows ArgumentError if a PowerSystems rule blocks removal from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_removal-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Internals","title":"PowerSystems.check_component_removal","text":"check_component_removal(sys::System, service::Service)\n\n\nThrows ArgumentError if a PowerSystems rule blocks removal from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_conductors-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_conductors","text":"check_conductors(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_connectivity-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_connectivity","text":"check_connectivity(data::Dict{String})\n\n\nchecks that all buses are unique and other components link to valid buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_reference_bus-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_reference_bus","text":"check_reference_bus(data::Dict{String})\n\n\nchecks that contains at least one refrence bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_reference_buses-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.check_reference_buses","text":"check_reference_buses(data::Dict{String, Any})\n\n\nchecks that each connected components has a reference bus, if not, adds one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_status-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_status","text":"check_status(data::Dict{String})\n\n\nchecks that active components are not connected to inactive buses, otherwise prints warnings\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_storage_parameters-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.check_storage_parameters","text":"check_storage_parameters(data::Dict{String, Any})\n\n\nchecks that each storage unit has a reasonable parameters\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_subsystems-Tuple{System}","page":"Internals","title":"PowerSystems.check_subsystems","text":"check_subsystems(sys::System)\n\n\nCheck the the consistency of subsystems.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_switch_parameters-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_switch_parameters","text":"check_switch_parameters(data::Dict{String})\n\n\nchecks that each switch has a reasonable parameters\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_type-Tuple{Any, Any}","page":"Internals","title":"PowerSystems.check_type","text":"check_type(typ, value) -> Any\n\n\nChecks if the given value is of a given type, if not tries to make it that type\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_voltage_setpoints-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.check_voltage_setpoints","text":"check_voltage_setpoints(data::Dict{String})\n\n\nthrows warnings if generator and dc line voltage setpoints are not consistent with the bus voltage setpoint\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.compare_dict-Tuple{Any, Any}","page":"Internals","title":"PowerSystems.compare_dict","text":"compare_dict(d1, d2) -> Bool\n\n\ntests if two dicts are equal, up to floating point precision\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_branch_directions!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_branch_directions!","text":"correct_branch_directions!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that all parallel branches have the same orientation\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_bus_types!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_bus_types!","text":"correct_bus_types!(data::Dict{String}) -> Set{Int64}\n\n\nchecks bus types are consistent with generator connections, if not, fixes them\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_component_refrence_bus!-Tuple{Any, Any, Any}","page":"Internals","title":"PowerSystems.correct_component_refrence_bus!","text":"correct_component_refrence_bus!(\n component_bus_ids,\n bus_lookup,\n component_gens\n)\n\n\nchecks that a connected component has a reference bus, if not, tries to add one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_cost_functions!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_cost_functions!","text":"correct_cost_functions!(\n data::Dict{String}\n) -> Tuple{Set{Int64}, Set{Int64}}\n\n\nthrows warnings if cost functions are malformed\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_current_limits!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_current_limits!","text":"correct_current_limits!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that each branch has a reasonable current rating-a, if not computes one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_dcline_limits!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.correct_dcline_limits!","text":"correct_dcline_limits!(\n data::Dict{String, Any}\n) -> Set{Int64}\n\n\nchecks that parameters for dc lines are reasonable\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_network_data!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_network_data!","text":"correct_network_data!(\n data::Dict{String};\n correct_branch_rating\n) -> Dict{String, Dict{Symbol, Set{Int64}}}\n\n\nRuns various data quality checks on a PowerModels data dictionary. Applies modifications in some cases. Reports modified component ids.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_thermal_limits!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_thermal_limits!","text":"correct_thermal_limits!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that each branch has a reasonable thermal rating-a, if not computes one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_transformer_parameters!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.correct_transformer_parameters!","text":"correct_transformer_parameters!(\n data::Dict{String}\n) -> Set{Int64}\n\n\nchecks that each branch has a reasonable transformer parameters\n\nthis is important because setting tap == 0.0 leads to NaN computations, which are hard to debug\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_voltage_angle_differences!","page":"Internals","title":"PowerSystems.correct_voltage_angle_differences!","text":"correct_voltage_angle_differences!(\n data::Dict{String}\n) -> Set{Int64}\ncorrect_voltage_angle_differences!(\n data::Dict{String},\n default_pad\n) -> Set{Int64}\n\n\nchecks that voltage angle differences are within 90 deg., if not tightens\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems.dc_branch_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.dc_branch_csv_parser!","text":"dc_branch_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nAdd DC branches to the System from raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.deactivate_isolated_components!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.deactivate_isolated_components!","text":"deactivate_isolated_components!(data::Dict{String}) -> Bool\n\n\nremoves buses with single branch connections and without any other attached components. Also removes connected components without suffuceint generation or loads.\n\nalso deactivates 0 valued loads and shunts.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.deserialize_uuid_handling-Tuple{Any, Any, Any}","page":"Internals","title":"PowerSystems.deserialize_uuid_handling","text":"deserialize_uuid_handling(\n field_type,\n val,\n component_cache\n) -> Any\n\n\nDeserialize the value, converting UUIDs to components where necessary.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_active_power_control-Tuple{OuterControl}","page":"Internals","title":"PowerSystems.get_active_power_control","text":"get_active_power_control(\n value::OuterControl\n) -> PowerSystems.ActivePowerControl\n\n\nGet active_power_control from OuterControl.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_avr_saturation-Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}","page":"Internals","title":"PowerSystems.get_avr_saturation","text":"get_avr_saturation(\n E::Tuple{Float64, Float64},\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients for an AVR \n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_branch-Tuple{DynamicBranch}","page":"Internals","title":"PowerSystems.get_branch","text":"get_branch(value::DynamicBranch) -> ACBranch\n\n\nGet branch\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_dataframe-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory}","page":"Internals","title":"PowerSystems.get_dataframe","text":"get_dataframe(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory\n) -> DataFrames.DataFrame\n\n\nReturn the dataframe for the category.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_enum_value-Tuple{Any, AbstractString}","page":"Internals","title":"PowerSystems.get_enum_value","text":"get_enum_value(enum, value::AbstractString) -> Any\n\n\nGet the enum value for the string. Case insensitive.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_exponential_saturation-Tuple{Tuple{Float64, Float64}}","page":"Internals","title":"PowerSystems.get_exponential_saturation","text":"get_exponential_saturation(\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se = Bx^A for Se(1.2) = B(1.2)^A and Se(1.0) = B(1.0)^A as: B = Se(1.0) and hence (1.2)^A = Se(1.2)/B -> A = log(Se(1.2)/B) / log(1.2)\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_generator_mapping","page":"Internals","title":"PowerSystems.get_generator_mapping","text":"get_generator_mapping() -> Dict{NamedTuple, DataType}\nget_generator_mapping(\n filename\n) -> Dict{NamedTuple, DataType}\n\n\nReturn a dict where keys are a tuple of input parameters (fuel, unit_type) and values are generator types.\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems.get_generator_type-Tuple{Any, Any, Dict{NamedTuple, DataType}}","page":"Internals","title":"PowerSystems.get_generator_type","text":"get_generator_type(\n fuel,\n unit_type,\n mappings::Dict{NamedTuple, DataType}\n) -> Union{Nothing, DataType}\n\n\nReturn the PowerSystems generator type for this fuel and unit_type.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_interconnection_efficiency-Tuple{HybridSystem}","page":"Internals","title":"PowerSystems.get_interconnection_efficiency","text":"get_interconnection_efficiency(\n value::HybridSystem\n) -> Union{Nothing, @NamedTuple{in::Float64, out::Float64}}\n\n\nget HybridSystem interconnection efficiency\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_outage_status_scenario-Tuple{TimeSeriesForcedOutage}","page":"Internals","title":"PowerSystems.get_outage_status_scenario","text":"get_outage_status_scenario(\n value::TimeSeriesForcedOutage\n) -> String\n\n\nGet TimeSeriesForcedOutage outage_status_scenario.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_quadratic_saturation-Tuple{Tuple{Float64, Float64}}","page":"Internals","title":"PowerSystems.get_quadratic_saturation","text":"get_quadratic_saturation(\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se = B(x - A)^2/x for Se(1.2) = B(1.2 - A)^2/1.2 and Se(1.0) = B(1.0 - A)^2/1.0 as: Se(1.0) = (Se(1.2) * 1.2) /(1.2 - A)^2 * (1.0 - A)^2/1.0 that yields (1.2 - A)^2 Se(1.0) = Se(1.2) * 1.2 * (1.0 - A)^2 or expanding: (1.2 * Se(1.2) - Se(1.0)) A^2 + (2.4 Se(1.0) - 2 * 1.2 * Se(1.2)) A + (1.2 * Se(1.2) - 1.44 Se(1.0)) = 0 and uses the negative solution of the quadratic equation.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_reactive_power_control-Tuple{OuterControl}","page":"Internals","title":"PowerSystems.get_reactive_power_control","text":"get_reactive_power_control(\n value::OuterControl\n) -> PowerSystems.ReactivePowerControl\n\n\nGet reactive_power_control from OuterControl.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_series_susceptance-Tuple{ACBranch}","page":"Internals","title":"PowerSystems.get_series_susceptance","text":"get_series_susceptance(b::ACBranch) -> Float64\n\n\nCalculate the admittance of AC branches\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_series_susceptance-Tuple{Union{PhaseShiftingTransformer, TapTransformer}}","page":"Internals","title":"PowerSystems.get_series_susceptance","text":"get_series_susceptance(\n b::Union{PhaseShiftingTransformer, TapTransformer}\n) -> Float64\n\n\nReturns the series susceptance of a controllable transformer following the convention in power systems to define susceptance as the inverse of the imaginary part of the impedance. In the case of phase shifter transformers the angle is ignored.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_user_field-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory, AbstractString}","page":"Internals","title":"PowerSystems.get_user_field","text":"get_user_field(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory,\n field::AbstractString\n) -> Any\n\n\nReturn the custom name stored in the user descriptor file.\n\nThrows DataFormatError if a required value is not found in the file.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_user_fields-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory}","page":"Internals","title":"PowerSystems.get_user_fields","text":"get_user_fields(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory\n) -> Any\n\n\nReturn a vector of user-defined fields for the category.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_addition!-Tuple{System, Component}","page":"Internals","title":"PowerSystems.handle_component_addition!","text":"handle_component_addition!(\n sys::System,\n component::Component;\n kwargs...\n)\n\n\nRefer to docstring for checkcomponentaddition!\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_addition_to_subsystem!-Tuple{System, AbstractString, Component}","page":"Internals","title":"PowerSystems.handle_component_addition_to_subsystem!","text":"handle_component_addition_to_subsystem!(\n _::System,\n subsystem_name::AbstractString,\n _::Component\n)\n\n\nPeforms component-type-specific postprocessing when a component is added to a subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_removal!-Tuple{System, ACBus}","page":"Internals","title":"PowerSystems.handle_component_removal!","text":"handle_component_removal!(sys::System, bus::ACBus)\n\n\nThrows ArgumentError if the bus number is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_removal_from_subsystem!-Tuple{System, AbstractString, Component}","page":"Internals","title":"PowerSystems.handle_component_removal_from_subsystem!","text":"handle_component_removal_from_subsystem!(\n _::System,\n subsystem_name::AbstractString,\n _::Component\n)\n\n\nPeforms component-type-specific postprocessing when a component is removed from a subsystem.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_deserialization_special_cases!-Tuple{Dict, Type{<:Component}}","page":"Internals","title":"PowerSystems.handle_deserialization_special_cases!","text":"handle_deserialization_special_cases!(\n component::Dict,\n _::Type{<:Component}\n)\n\n\nAllow types to implement handling of special cases during deserialization.\n\nArguments\n\ncomponent::Dict: The component serialized as a dictionary.\n::Type: The type of the component.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.im_replicate-Tuple{Dict{String}, Int64, Set{String}}","page":"Internals","title":"PowerSystems.im_replicate","text":"im_replicate(\n sn_data::Dict{String},\n count::Int64,\n global_keys::Set{String}\n) -> Dict{String, Any}\n\n\nTransforms a single network into a multinetwork with several deepcopies of the original network\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.is_attached-Union{Tuple{T}, Tuple{T, System}} where T<:Component","page":"Internals","title":"PowerSystems.is_attached","text":"is_attached(component::Component, sys::System) -> Bool\n\n\nReturn true if the component is attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.isafield-Tuple{Component, Symbol}","page":"Internals","title":"PowerSystems.isafield","text":"isafield(component::Component, field::Symbol) -> Any\n\n\nChecks if a PowerSystemDevice has a field or subfield name.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.ismultinetwork-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.ismultinetwork","text":"ismultinetwork(data::Dict{String}) -> Any\n\n\nchecks if a given network data is a multinetwork\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.iterate_rows-Tuple{PowerSystemTableData, Any}","page":"Internals","title":"PowerSystems.iterate_rows","text":"iterate_rows(\n data::PowerSystemTableData,\n category;\n na_to_nothing\n) -> Channel{Any}\n\n\nReturn a NamedTuple of parameters from the descriptor file for each row of a dataframe, making type conversions as necessary.\n\nRefer to the PowerSystems descriptor file for field names that will be created.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.load_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.load_csv_parser!","text":"load_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nload_csv_parser!(sys::System, data::PowerSystemTableData)\n\nAdd loads to the System from the raw load data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.loadzone_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.loadzone_csv_parser!","text":"loadzone_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nloadzone_csv_parser!(sys::System, data::PowerSystemTableData)\n\nAdd branches to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_bus-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.make_bus","text":"make_bus(bus_dict::Dict{String, Any}) -> ACBus\n\n\nCreates a PowerSystems.ACBus from a PowerSystems bus dictionary\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_generator-Tuple{PowerSystemTableData, Vararg{Any, 4}}","page":"Internals","title":"PowerSystems.make_generator","text":"make_generator(\n data::PowerSystemTableData,\n gen,\n cost_colnames,\n bus,\n gen_storage\n) -> Any\n\n\nCreates a generator of any type.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_mixed_units!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.make_mixed_units!","text":"make_mixed_units!(data::Dict{String})\n\n\nTransforms network data into mixed-units (inverse of per-unit)\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_per_unit!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.make_per_unit!","text":"make_per_unit!(data::Dict{String})\n\n\nTransforms network data into per-unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_thermal_gen-Tuple{Union{SubString{String}, String}, Dict, ACBus, Float64}","page":"Internals","title":"PowerSystems.make_thermal_gen","text":"make_thermal_gen(\n gen_name::Union{SubString{String}, String},\n d::Dict,\n bus::ACBus,\n sys_mbase::Float64\n) -> ThermalStandard\n\n\nThe polynomial term follows the convention that for an n-degree polynomial, at least n + 1 components are needed. c(p) = cn*p^n+...+c1p+c0 co is stored in the field in of the Econ Struct\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.move_genfuel_and_gentype!-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.move_genfuel_and_gentype!","text":"move_genfuel_and_gentype!(data::Dict{String, Any})\n\n\nMove gentype and genfuel fields to be subfields of gen\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_matpower-Tuple{IO}","page":"Internals","title":"PowerSystems.parse_matpower","text":"parse_matpower(io::IO; validate) -> Dict{String, Any}\n\n\nParses the matpwer data from either a filename or an IO object\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_psse-Tuple{IO}","page":"Internals","title":"PowerSystems.parse_psse","text":"parse_psse(io::IO; kwargs...) -> Dict{String, Any}\n\n\nfunction parse_psse(io::IO; kwargs...)::Dict\n\nParses directly from iostream\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_psse-Tuple{String}","page":"Internals","title":"PowerSystems.parse_psse","text":"parse_psse(filename::String; kwargs...) -> Dict{String, Any}\n\n\nparse_psse(filename::String; kwargs...)::Dict\n\nParses directly from file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_pti-Tuple{IO}","page":"Internals","title":"PowerSystems.parse_pti","text":"parse_pti(io::IO) -> Dict{String, Array{Dict}}\n\n\nparse_pti(io::IO)\n\nReads PTI data in io::IO, returning a Dict of the data parsed into the proper types.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_pti-Tuple{String}","page":"Internals","title":"PowerSystems.parse_pti","text":"parse_pti(filename::String) -> Dict{String, Array{Dict}}\n\n\nparse_pti(filename::String)\n\nOpen PTI raw file given by filename, returning a Dict of the data parsed into the proper types.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.propagate_topology_status!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.propagate_topology_status!","text":"propagate_topology_status!(\n data::Dict{String}\n) -> Union{Nothing, Bool}\n\n\nfinds active network buses and branches that are not necessary for the computation and sets their status to off.\n\nWorks on a PowerModels data dict, so that a it can be used without a GenericPowerModel object\n\nWarning: this implementation has quadratic complexity, in the worst case\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.read_and_convert_ts","page":"Internals","title":"PowerSystems.read_and_convert_ts","text":"read_and_convert_ts(\n ts::TimeSeriesData,\n component::Component\n) -> TimeSeries.TimeArray\nread_and_convert_ts(\n ts::TimeSeriesData,\n component::Component,\n start_time::Union{Nothing, Dates.DateTime}\n) -> TimeSeries.TimeArray\nread_and_convert_ts(\n ts::TimeSeriesData,\n component::Component,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64}\n) -> TimeSeries.TimeArray\nread_and_convert_ts(\n ts::TimeSeriesData,\n component::Component,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64},\n transform_fn\n) -> TimeSeries.TimeArray\n\n\nCall gettimeseriesarray on the given time series and return a TimeArray of the results, values mapped by `transformfn` if it is not nothing\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems.read_gen!-Tuple{System, Dict, Dict{Int64, ACBus}}","page":"Internals","title":"PowerSystems.read_gen!","text":"read_gen!(\n sys::System,\n data::Dict,\n bus_number_to_bus::Dict{Int64, ACBus};\n kwargs...\n)\n\n\nTransfer generators to ps_dict according to their classification\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.replicate-Tuple{Dict{String}, Int64}","page":"Internals","title":"PowerSystems.replicate","text":"replicate(\n sn_data::Dict{String},\n count::Int64;\n global_keys\n) -> Dict{String, Any}\n\n\nTurns in given single network data in multinetwork data with a count replicate of the given network. Note that this function performs a deepcopy of the network data. Significant multinetwork space savings can often be achieved by building application specific methods of building multinetwork with minimal data replication.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.resolve_swithces!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.resolve_swithces!","text":"resolve_swithces!(data::Dict{String})\n\n\ngiven a network data dict merges buses that are connected by closed switches converting the dataset into a pure bus-branch model.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.row_to_dict-Tuple{Any, Any}","page":"Internals","title":"PowerSystems.row_to_dict","text":"row_to_dict(row_data, columns) -> Dict{String, Any}\n\n\ntakes a row from a matrix and assigns the values names\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.row_to_typed_dict-Tuple{Any, Any}","page":"Internals","title":"PowerSystems.row_to_typed_dict","text":"row_to_typed_dict(row_data, columns) -> Dict{String, Any}\n\n\ntakes a row from a matrix and assigns the values names and types\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.select_largest_component-Tuple{Dict{String, Any}}","page":"Internals","title":"PowerSystems.select_largest_component","text":"select_largest_component(data::Dict{String, Any}) -> Any\n\n\ndetermines the largest connected component of the network and turns everything else off\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.serialize_uuid_handling-Tuple{Any}","page":"Internals","title":"PowerSystems.serialize_uuid_handling","text":"serialize_uuid_handling(val) -> Any\n\n\nSerialize the value, encoding as UUIDs where necessary.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.services_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internals","title":"PowerSystems.services_csv_parser!","text":"services_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nAdd services to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_active_power_control!-Tuple{OuterControl, Any}","page":"Internals","title":"PowerSystems.set_active_power_control!","text":"set_active_power_control!(value::OuterControl, val) -> Any\n\n\nSet OuterControl active_power_control.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_branch!-Tuple{DynamicBranch, ACBranch}","page":"Internals","title":"PowerSystems.set_branch!","text":"set_branch!(value::DynamicBranch, val::ACBranch) -> ACBranch\n\n\nSet branch\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_electric_load!-Tuple{HybridSystem, ElectricLoad}","page":"Internals","title":"PowerSystems.set_electric_load!","text":"set_electric_load!(hybrid::HybridSystem, val::ElectricLoad)\n\n\nSet HybridSystem load\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_interconnection_efficiency!-Tuple{HybridSystem, Any}","page":"Internals","title":"PowerSystems.set_interconnection_efficiency!","text":"set_interconnection_efficiency!(\n value::HybridSystem,\n val\n) -> Any\n\n\nSet HybridSystem interconnection_efficiency.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_interconnection_impedance!-Tuple{HybridSystem, Any}","page":"Internals","title":"PowerSystems.set_interconnection_impedance!","text":"set_interconnection_impedance!(\n value::HybridSystem,\n val\n) -> Any\n\n\nset HybridSystem interconnection impedance\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_interconnection_rating!-Tuple{HybridSystem, Any}","page":"Internals","title":"PowerSystems.set_interconnection_rating!","text":"set_interconnection_rating!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem interconnection_rating.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_reactive_power_control!-Tuple{OuterControl, Any}","page":"Internals","title":"PowerSystems.set_reactive_power_control!","text":"set_reactive_power_control!(value::OuterControl, val) -> Any\n\n\nSet OuterControl reactive_power_control.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_renewable_unit!-Tuple{HybridSystem, RenewableGen}","page":"Internals","title":"PowerSystems.set_renewable_unit!","text":"set_renewable_unit!(hybrid::HybridSystem, val::RenewableGen)\n\n\nSet HybridSystem renewable unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_storage!-Tuple{HybridSystem, Storage}","page":"Internals","title":"PowerSystems.set_storage!","text":"set_storage!(hybrid::HybridSystem, val::Storage)\n\n\nSet HybridSystem storage unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_thermal_unit!-Tuple{HybridSystem, ThermalGen}","page":"Internals","title":"PowerSystems.set_thermal_unit!","text":"set_thermal_unit!(hybrid::HybridSystem, val::ThermalGen)\n\n\nSet HybridSystem thermal unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.simplify_cost_terms!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.simplify_cost_terms!","text":"simplify_cost_terms!(\n data::Dict{String}\n) -> Tuple{Set{Int64}, Set{Int64}}\n\n\ntrims zeros from higher order cost terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.simplify_network!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.simplify_network!","text":"simplify_network!(data::Dict{String}) -> Bool\n\n\nattempts to deactive components that are not needed in the network by repeated calls to propagate_topology_status! and deactivate_isolated_components!\n\nwarning: this implementation has quadratic complexity, in the worst case\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.split_line-Tuple{AbstractString}","page":"Internals","title":"PowerSystems.split_line","text":"split_line(mp_line::AbstractString) -> Vector{Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.standardize_cost_terms!-Tuple{Dict{String}}","page":"Internals","title":"PowerSystems.standardize_cost_terms!","text":"standardize_cost_terms!(data::Dict{String}; order)\n\n\nensures all polynomial costs functions have the same number of terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.throw_if_not_attached-Tuple{Component, System}","page":"Internals","title":"PowerSystems.throw_if_not_attached","text":"throw_if_not_attached(component::Component, sys::System)\n\n\nThrows ArgumentError if the component is not attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.total_capacity_rating-Tuple{System}","page":"Internals","title":"PowerSystems.total_capacity_rating","text":"total_capacity_rating(sys::System) -> Any\n\n\ntotal_capacity_rating(sys::System)\n\nSum of system generator and storage ratings.\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.total_load_rating-Tuple{System}","page":"Internals","title":"PowerSystems.total_load_rating","text":"total_load_rating(sys::System) -> Any\n\n\ntotal_load_rating(sys::System)\n\nChecks the system for sum(generator ratings) >= sum(load ratings).\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.update_bus_ids!-Tuple{Dict{String}, Dict{Int64, Int64}}","page":"Internals","title":"PowerSystems.update_bus_ids!","text":"update_bus_ids!(\n data::Dict{String},\n bus_id_map::Dict{Int64, Int64};\n injective\n)\n\n\ngiven a network data dict and a mapping of current-bus-ids to new-bus-ids modifies the data dict to reflect the proposed new bus ids.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.update_data!-Tuple{Dict{String}, Dict{String}}","page":"Internals","title":"PowerSystems.update_data!","text":"update_data!(data::Dict{String}, new_data::Dict{String})\n\n\nrecursively applies new_data to data, overwriting information\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.verify_device_eligibility-Tuple{System, StaticInjection, Service}","page":"Internals","title":"PowerSystems.verify_device_eligibility","text":"verify_device_eligibility(\n sys::System,\n component::StaticInjection,\n service::Service\n)\n\n\nValidates if a device is eligible to contribute to a service.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\nservice::Service,: Service for which the device is eligible to contribute\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#FrequencyEstimator","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/#FixedFrequency","page":"FrequencyEstimator","title":"FixedFrequency","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/FixedFrequency.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.FixedFrequency","page":"FrequencyEstimator","title":"PowerSystems.FixedFrequency","text":"mutable struct FixedFrequency <: FrequencyEstimator\n frequency::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Fixed Frequency Estimator (i.e. no PLL)\n\nArguments\n\nfrequency::Float64: (default: 1.0) Reference Frequency (pu)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) FixedFrequency has no states\nn_states::Int: (Do not modify.) FixedFrequency has no states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::FixedFrequency) -> Dict{String, Any}\n\n\nGet FixedFrequency ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_frequency-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_frequency","text":"get_frequency(value::FixedFrequency) -> Float64\n\n\nGet FixedFrequency frequency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::FixedFrequency) -> Int64\n\n\nGet FixedFrequency n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::FixedFrequency) -> Vector{Symbol}\n\n\nGet FixedFrequency states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{FixedFrequency, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedFrequency, val) -> Any\n\n\nSet FixedFrequency ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_frequency!-Tuple{FixedFrequency, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_frequency!","text":"set_frequency!(value::FixedFrequency, val) -> Any\n\n\nSet FixedFrequency frequency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#KauraPLL","page":"FrequencyEstimator","title":"KauraPLL","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/KauraPLL.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.KauraPLL","page":"FrequencyEstimator","title":"PowerSystems.KauraPLL","text":"mutable struct KauraPLL <: FrequencyEstimator\n ω_lp::Float64\n kp_pll::Float64\n ki_pll::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Phase-Locked Loop (PLL) based on \"Operation of a phase locked loop system under distorted utility conditions\" by Vikram Kaura, and Vladimir Blasko\n\nArguments\n\nω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)\nkp_pll::Float64: PLL proportional gain, validation range: (0, nothing)\nki_pll::Float64: PLL integral gain, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the KauraPLL model are:\n\nvd_pll: d-axis of the measured voltage in the PLL synchronous reference frame (SRF),\nvq_pll: q-axis of the measured voltage in the PLL SRF,\nε_pll: Integrator state of the PI controller,\nθ_pll: Phase angle displacement in the PLL SRF\n\nn_states::Int: (Do not modify.) KauraPLL has 4 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::KauraPLL) -> Dict{String, Any}\n\n\nGet KauraPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ki_pll-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ki_pll","text":"get_ki_pll(value::KauraPLL) -> Float64\n\n\nGet KauraPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_kp_pll-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_kp_pll","text":"get_kp_pll(value::KauraPLL) -> Float64\n\n\nGet KauraPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::KauraPLL) -> Int64\n\n\nGet KauraPLL n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::KauraPLL) -> Vector{Symbol}\n\n\nGet KauraPLL states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ω_lp-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ω_lp","text":"get_ω_lp(value::KauraPLL) -> Float64\n\n\nGet KauraPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ki_pll!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ki_pll!","text":"set_ki_pll!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_kp_pll!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_kp_pll!","text":"set_kp_pll!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ω_lp!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ω_lp!","text":"set_ω_lp!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#ReducedOrderPLL","page":"FrequencyEstimator","title":"ReducedOrderPLL","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/ReducedOrderPLL.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.ReducedOrderPLL","page":"FrequencyEstimator","title":"PowerSystems.ReducedOrderPLL","text":"mutable struct ReducedOrderPLL <: FrequencyEstimator\n ω_lp::Float64\n kp_pll::Float64\n ki_pll::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Phase-Locked Loop (PLL) based on \"Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters.\"\n\nArguments\n\nω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)\nkp_pll::Float64: PLL proportional gain, validation range: (0, nothing)\nki_pll::Float64: PLL integral gain, validation range: (0, nothing)\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\nstates::Vector{Symbol}: (Do not modify.) The states of the ReducedOrderPLL model are:\n\nvq_pll: q-axis of the measured voltage in the PLL synchronous reference frame (SRF),\nε_pll: Integrator state of the PI controller,\nθ_pll: Phase angle displacement in the PLL SRF\n\nn_states::Int: (Do not modify.) ReducedOrderPLL has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::ReducedOrderPLL) -> Dict{String, Any}\n\n\nGet ReducedOrderPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ki_pll-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ki_pll","text":"get_ki_pll(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_kp_pll-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_kp_pll","text":"get_kp_pll(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReducedOrderPLL) -> Int64\n\n\nGet ReducedOrderPLL n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::ReducedOrderPLL) -> Vector{Symbol}\n\n\nGet ReducedOrderPLL states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ω_lp-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ω_lp","text":"get_ω_lp(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ki_pll!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ki_pll!","text":"set_ki_pll!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_kp_pll!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_kp_pll!","text":"set_kp_pll!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ω_lp!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ω_lp!","text":"set_ω_lp!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#ExponentialLoad","page":"ExponentialLoad","title":"ExponentialLoad","text":"","category":"section"},{"location":"model_library/generated_ExponentialLoad/","page":"ExponentialLoad","title":"ExponentialLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/ExponentialLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.ExponentialLoad","page":"ExponentialLoad","title":"PowerSystems.ExponentialLoad","text":"mutable struct ExponentialLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n α::Float64\n β::Float64\n base_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA voltage-dependent ZIP load, most commonly used for dynamics modeling.\n\nAn ExponentialLoad models active power as P = P0 * V^α and reactive power as Q = Q0 * V^β, where the exponents α and β select govern the voltage dependency. For an alternative three-part formulation of the ZIP model, see StandardLoad. For a simpler load model with no voltage dependency, see PowerLoad\n\nArguments\n\nname::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name\navailable::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations\nbus::ACBus: Bus that this component is connected to\nactive_power::Float64: Active power coefficient, P0 (MW)\nreactive_power::Float64: Reactive power coefficient, Q0 (MVAR)\nα::Float64: Exponent relating voltage dependency for active power. 0 = constant power only, 1 = constant current only, and 2 = constant impedance only, validation range: (0, nothing)\nβ::Float64: Exponent relating voltage dependency for reactive power. 0 = constant power only, 1 = constant current only, and 2 = constant impedance only, validation range: (0, nothing)\nbase_power::Float64: Base power (MVA) for per unitization, validation range: (0, nothing)\nmax_active_power::Float64: Maximum active power (MW) that this load can demand\nmax_reactive_power::Float64: Maximum reactive power (MVAR) that this load can demand\nservices::Vector{Service}: (default: Device[]) Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: (default: nothing) corresponding dynamic injection device\next::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.\ninternal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ExponentialLoad/#InfrastructureSystems.get_name-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::ExponentialLoad) -> String\n\n\nGet ExponentialLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_active_power-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::ExponentialLoad) -> Any\n\n\nGet ExponentialLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_available-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_available","text":"get_available(value::ExponentialLoad) -> Bool\n\n\nGet ExponentialLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_base_power-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::ExponentialLoad) -> Float64\n\n\nGet ExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_bus-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_bus","text":"get_bus(value::ExponentialLoad) -> ACBus\n\n\nGet ExponentialLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_dynamic_injector-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::ExponentialLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ExponentialLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_ext-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_ext","text":"get_ext(value::ExponentialLoad) -> Dict{String, Any}\n\n\nGet ExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_max_active_power-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(value::ExponentialLoad) -> Any\n\n\nGet ExponentialLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_max_reactive_power-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(value::ExponentialLoad) -> Any\n\n\nGet ExponentialLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_reactive_power-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::ExponentialLoad) -> Any\n\n\nGet ExponentialLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_services-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_services","text":"get_services(value::ExponentialLoad) -> Vector{Service}\n\n\nGet ExponentialLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_α-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_α","text":"get_α(value::ExponentialLoad) -> Float64\n\n\nGet ExponentialLoad α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_β-Tuple{ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_β","text":"get_β(value::ExponentialLoad) -> Float64\n\n\nGet ExponentialLoad β.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_active_power!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_available!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_available!","text":"set_available!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_base_power!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_bus!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_ext!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_max_active_power!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_max_reactive_power!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_reactive_power!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_services!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_services!","text":"set_services!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_α!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_α!","text":"set_α!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_β!-Tuple{ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_β!","text":"set_β!(value::ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad β.\n\n\n\n\n\n","category":"method"}] +} diff --git a/previews/PR1200/siteinfo.js b/previews/PR1200/siteinfo.js new file mode 100644 index 0000000000..c526652ca5 --- /dev/null +++ b/previews/PR1200/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR1200"; diff --git a/previews/PR1200/tutorials/add_dynamic_data/index.html b/previews/PR1200/tutorials/add_dynamic_data/index.html new file mode 100644 index 0000000000..1161914128 --- /dev/null +++ b/previews/PR1200/tutorials/add_dynamic_data/index.html @@ -0,0 +1,343 @@ + +Adding Data for Dynamic Simulations · PowerSystems.jl

Adding Data for Dynamic Simulations

In this tutorial, we are going to add dynamic data to a power System, including a dynamic generator suitable for phasor-type simulations, as well as a dynamic inverter and dynamic lines necessary for more complex EMT (electro-magnetic transient) simulations.

To run a dynamic simulation in Sienna\Dyn using PowerSimulationsDynamics.jl, two data layers are required:

  1. A base layer of static components, which includes the data needed to run a power flow problem
  2. An additional layer of dynamic components, which define differential equations to run a transient simulation

We'll define these two layers sequentially.

Defining the Static Data Layer

Instead of defining the static data in the System manually, we will load an existing three-bus system using PowerSystemCaseBuilder.jl to use as a starting point.

Start by importing these packages:

julia> using PowerSystems
julia> using PowerSystemCaseBuilder
julia> const PSY = PowerSystems;

To create the system, load pre-existing data for a 3-bus system using PowerSystemCaseBuilder.jl:

julia> threebus_sys = build_system(PSIDSystems, "3 Bus Inverter Base")┌ Info: Building new system 3 Bus Inverter Base from raw data
+  sys_descriptor.raw_data = "/home/runner/.julia/artifacts/afb608473cf4d5eb22147856de1a1a651f36d40b/PowerSystemsTestData-3.1/psid_tests/data_examples"
+[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
+[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
+[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
+┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:998
+┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
+@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:1004
+[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg.
+[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg.
+┌ Info: Constructing System from Power Models
+  data["name"] = "threebusinverter"
+  data["source_type"] = "pti"
+[ Info: Reading bus data
+[ Info: Reading Load data in PowerModels dict to populate System ...
+[ Info: Reading LoadZones data in PowerModels dict to populate System ...
+[ Info: Reading generator data
+[ Info: Reading branch data
+[ Info: Reading shunt data
+[ Info: Reading DC Line data
+[ Info: Reading storage data
+[ Info: Serialized System to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/3 Bus Inverter Base.json
+[ Info: Serialized System metadata to /home/runner/.julia/packages/PowerSystemCaseBuilder/uZO8H/data/serialized_system/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/3 Bus Inverter Base_metadata.json
+System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 16          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 3     │
+│ Arc             │ 3     │
+│ Area            │ 1     │
+│ Line            │ 3     │
+│ LoadZone        │ 1     │
+│ StandardLoad    │ 3     │
+│ ThermalStandard │ 2     │
+└─────────────────┴───────┘

See that there is a table of "Static Components", but no "Dynamic" data yet.

Let's view the generators in the system with show_components, including which bus they are connected at:

julia> show_components(ThermalStandard, threebus_sys, [:bus])ThermalStandard
+┌─────────────────┬───────────┬──────────────┐
+│ name            │ available │ bus          │
+├─────────────────┼───────────┼──────────────┤
+│ generator-102-1 │ true      │ ACBus: BUS 2 │
+│ generator-103-1 │ true      │ ACBus: BUS 3 │
+└─────────────────┴───────────┴──────────────┘

Notice that there are generators connected at Buses 2 and 3, but not Bus 1.

Now, we are going to add the data needed to run an EMT simulation. We will add an infinite voltage source to Bus 1, which is the last component we need to complete the static data layer. Then, we will a dynamic generator or inverter model to the two generators, as well as adding dynamic lines.

Add an Infinite Voltage Source

Add a infinite voltage source with small impedance to Bus 1 (the reference bus). First, retrieve the reference bus using get_components:

julia> slack_bus = first(get_components(x -> get_bustype(x) == ACBusTypes.REF, Bus, threebus_sys))ACBus: BUS 1:
+   number: 101
+   name: BUS 1
+   bustype: ACBusTypes.REF = 3
+   angle: 0.0
+   magnitude: 1.02
+   voltage_limits: (min = 0.9, max = 1.1)
+   base_voltage: 138.0
+   area: Area: 1
+   load_zone: LoadZone: 1
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

Notice we filtered by the bus type to get the bus(es) we wanted.

Next, manually define a Source:

julia> inf_source = Source(;
+           name = "InfBus", #name
+           available = true, #availability
+           active_power = 0.0,
+           reactive_power = 0.0,
+           bus = slack_bus, #bus
+           R_th = 0.0, #Rth
+           X_th = 5e-6, #Xth
+       );

And add it to the system:

julia> add_component!(threebus_sys, inf_source)

This completes the first layer of static data, using components similar to those we added manually in the Create and Explore a Power System tutorial.

Adding a Dynamic Generator

Now, we will connect a classic machine model to the generator at bus 102. Dynamic generator devices are composed by 5 components: a Machine, Shaft, Automatic Voltage Regulator (AVR), Power System Stabilizer (PSS), and Prime Mover and Turbine Governor. For each of those 5 components, we will select a specific model that defines the data and differential equations for that component, and then use those 5 components to define the complete dynamic generator.

Note

When defining dynamic data, by convention PowerSystems.jl assumes that all data is in DEVICE_BASE.

First, define a Machine that describes the the stator electro-magnetic dynamics:

julia> # Create the machine
+       machine_oneDoneQ = OneDOneQMachine(;
+           R = 0.0,
+           Xd = 1.3125,
+           Xq = 1.2578,
+           Xd_p = 0.1813,
+           Xq_p = 0.25,
+           Td0_p = 5.89,
+           Tq0_p = 0.6,
+       )OneDOneQMachine(0.0, 1.3125, 1.2578, 0.1813, 0.25, 5.89, 0.6, Dict{String, Any}(), [:eq_p, :ed_p], 2, InfrastructureSystems.InfrastructureSystemsInternal(UUID("5e8b30e4-13bf-4958-b4dd-0ea9c0ad83eb"), nothing, nothing, nothing))

Notice that we selected a specific model, OneDOneQMachine, with the parameters tailored to a One-d-one-q dynamic machine model.

Next, define a specific Shaft model, SingleMass that describes the rotor electro-mechanical dynamics:

julia> # Shaft
+       shaft_no_damping = SingleMass(;
+           H = 3.01, #(M = 6.02 -> H = M/2)
+           D = 0.0,
+       )SingleMass(3.01, 0.0, Dict{String, Any}(), [:δ, :ω], 2, InfrastructureSystems.InfrastructureSystemsInternal(UUID("2801ad59-841f-43cd-b225-55a93c1ff16c"), nothing, nothing, nothing))

Represent the electromotive dynamics of the AVR controller using a specific Automatic Voltage Regulator model, AVRTypeI:

julia> # AVR: Type I: Resembles a DC1 AVR
+       avr_type1 = AVRTypeI(;
+           Ka = 20.0,
+           Ke = 0.01,
+           Kf = 0.063,
+           Ta = 0.2,
+           Te = 0.314,
+           Tf = 0.35,
+           Tr = 0.001,
+           Va_lim = (min = -5.0, max = 5.0),
+           Ae = 0.0039, #1st ceiling coefficient
+           Be = 1.555, #2nd ceiling coefficient
+       )AVRTypeI(20.0, 0.01, 0.063, 0.2, 0.314, 0.35, 0.001, (min = -5.0, max = 5.0), 0.0039, 1.555, 1.0, Dict{String, Any}(), [:Vf, :Vr1, :Vr2, :Vm], 4, StateTypes[StateTypes.Differential = 1, StateTypes.Differential = 1, StateTypes.Differential = 1, StateTypes.Differential = 1], InfrastructureSystems.InfrastructureSystemsInternal(UUID("23e2046d-ab12-4c92-916b-dfaa0488256e"), nothing, nothing, nothing))

Define a fixed efficiency Prime Mover and Turbine Governor with TGFixed:

julia> #No TG
+       tg_none = TGFixed(; efficiency = 1.0) #efficiencyTGFixed(1.0, 1.0, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("d93324db-dec7-427e-a7cf-88fe500c514b"), nothing, nothing, nothing))

See that we are modeling a machine that does not include a Turbine Governor (or PSS below), but you must define components for them to build a complete machine model.

Similarly, define a PSS using PSSFixed, which is used to describe the stabilization signal for the AVR:

julia> #No PSS
+       pss_none = PSSFixed(; V_pss = 0.0)PSSFixed(0.0, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("23957974-11da-40dd-bb0a-9acfaeb47f63"), nothing, nothing, nothing))

Now, we are ready to add a dynamic generator to the static generator at bus 102. First, let's get that static generator:

julia> static_gen = get_component(Generator, threebus_sys, "generator-102-1")ThermalStandard: generator-102-1:
+   name: generator-102-1
+   available: true
+   status: true
+   bus: ACBus: BUS 2
+   active_power: 0.7
+   reactive_power: 0.0
+   rating: 3.333526661060325
+   active_power_limits: (min = 0.0, max = 3.18)
+   reactive_power_limits: (min = -1.0, max = 1.0)
+   ramp_limits: (up = 3.18, down = 3.18)
+   operation_cost: ThermalGenerationCost composed of variable: CostCurve{QuadraticCurve}
+   base_power: 100.0
+   time_limits: nothing
+   must_run: false
+   prime_mover_type: PrimeMovers.OT = 19
+   fuel: ThermalFuels.OTHER = 14
+   services: 0-element Vector{Service}
+   time_at_status: 10000.0
+   dynamic_injector: nothing
+   ext: Dict{String, Any}("z_source" => (r = 0.0, x = 1.0))
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

Notice that its dynamic_injector field is currently nothing.

Use its name and the 5 components above to define its DynamicGenerator model:

julia> dynamic_gen = DynamicGenerator(;
+           name = get_name(static_gen),
+           ω_ref = 1.0, # frequency reference set-point
+           machine = machine_oneDoneQ,
+           shaft = shaft_no_damping,
+           avr = avr_type1,
+           prime_mover = tg_none,
+           pss = pss_none,
+       )
+DynamicGenerator: generator-102-1:
+   name: generator-102-1
+   ω_ref: 1.0
+   machine: OneDOneQMachine
+   shaft: SingleMass
+   avr: AVRTypeI
+   prime_mover: TGFixed
+   pss: PSSFixed
+   base_power: 100.0
+   n_states: 8
+   states: [:eq_p, :ed_p, :δ, :ω, :Vf, :Vr1, :Vr2, :Vm]
+   ext: Dict{String, Any}()
+   internal: InfrastructureSystems.InfrastructureSystemsInternal
+   has_supplemental_attributes: false
+   has_time_series: false

See that the specific component models that we selected and defined above were used to specify the states needed to model this generator in a dynamic simulation.

Finally, use the dynamic version of add_component! to add this data to the System:

julia> add_component!(threebus_sys, dynamic_gen, static_gen)┌ Warning: struct DynamicGenerator does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51

Notice that unlike static components, which are just added to the System, this dynamic component is added to a specific static component within the System.

Tip

To define identical dynamic devices for multiple generators at once, define the pieces of the generator model as functions, such as:

avr_type1() = AVRTypeI(...

When called in the DynamicGenerator constructor, this will create a new AVR for each generator, so they are different in memory. Later, if you decide to modify the AVR parameters for a specific generator, it will not modify the AVR in another generator.

Recall that you can print the system to see a summary of its data:

julia> threebus_sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 18          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 3     │
+│ Arc             │ 3     │
+│ Area            │ 1     │
+│ Line            │ 3     │
+│ LoadZone        │ 1     │
+│ Source          │ 1     │
+│ StandardLoad    │ 3     │
+│ ThermalStandard │ 2     │
+└─────────────────┴───────┘
+
+Dynamic Components
+┌────────────────────────────────────────────────────────────────────────────┬──
+│ Type                                                                       │ ⋯
+├────────────────────────────────────────────────────────────────────────────┼──
+│ DynamicGenerator{OneDOneQMachine, SingleMass, AVRTypeI, TGFixed, PSSFixed} │ ⋯
+└────────────────────────────────────────────────────────────────────────────┴──
+                                                                1 column omitted

See that a new table has been added: "Dynamic Components."

Also, print the static generator to double-check the dynamic layer has been added:

julia> static_genThermalStandard: generator-102-1:
+   name: generator-102-1
+   available: true
+   status: true
+   bus: ACBus: BUS 2
+   active_power: 0.7
+   reactive_power: 0.0
+   rating: 3.333526661060325
+   active_power_limits: (min = 0.0, max = 3.18)
+   reactive_power_limits: (min = -1.0, max = 1.0)
+   ramp_limits: (up = 3.18, down = 3.18)
+   operation_cost: ThermalGenerationCost composed of variable: CostCurve{QuadraticCurve}
+   base_power: 100.0
+   time_limits: nothing
+   must_run: false
+   prime_mover_type: PrimeMovers.OT = 19
+   fuel: ThermalFuels.OTHER = 14
+   services: 0-element Vector{Service}
+   time_at_status: 10000.0
+   dynamic_injector: DynamicGenerator: generator-102-1
+   ext: Dict{String, Any}("z_source" => (r = 0.0, x = 1.0))
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

Verify that dynamic_injector now contains our dynamic generator model.

Up to this point, you have added the dynamic data necessary to do a phaser-type simulation, which focuses on machine behavior. Now we will also add dynamic inverters and lines to enable EMT simulations.

Adding a Dynamic Inverter

Next we will connect a Virtual Synchronous Generator Inverter at bus 103.

An inverter is composed of Converter, OuterControl, InnerControl, DCSource, FrequencyEstimator, and Filter components:

As we did for the generator, we will define each of these six components with a specific model, which defines its differential equations.

First, define an AverageConverter as the specific model for the Converter component:

julia> converter_high_power() = AverageConverter(;
+           rated_voltage = 138.0,
+           rated_current = 100.0,
+       )converter_high_power (generic function with 1 method)

Recall from the tip above that we can define these components as functions instead of objects for reusability across multiple generators, and notice that that is what we have done here.

Define OuterControl using Virtual Inertia for the active power control and ReactivePowerDroop for the reactive power control:

julia> outer_control() = OuterControl(
+           VirtualInertia(; Ta = 2.0, kd = 400.0, kω = 20.0),
+           ReactivePowerDroop(; kq = 0.2, ωf = 1000.0),
+       )outer_control (generic function with 1 method)

Define an InnerControl as a Voltage+Current Controller with Virtual Impedance, using VoltageModeControl:

julia> inner_control() = VoltageModeControl(;
+           kpv = 0.59,     #Voltage controller proportional gain
+           kiv = 736.0,    #Voltage controller integral gain
+           kffv = 0.0,     #Binary variable enabling voltage feed-forward in current controllers
+           rv = 0.0,       #Virtual resistance in pu
+           lv = 0.2,       #Virtual inductance in pu
+           kpc = 1.27,     #Current controller proportional gain
+           kic = 14.3,     #Current controller integral gain
+           kffi = 0.0,     #Binary variable enabling the current feed-forward in output of current controllers
+           ωad = 50.0,     #Active damping low pass filter cut-off frequency
+           kad = 0.2,      #Active damping gain
+       )inner_control (generic function with 1 method)

Define a FixedDCSource for the DCSource:

julia> dc_source_lv() = FixedDCSource(; voltage = 600.0)dc_source_lv (generic function with 1 method)

Define a FrequencyEstimator as a phase-locked loop (PLL) using KauraPLL:

julia> pll() = KauraPLL(;
+           ω_lp = 500.0, #Cut-off frequency for LowPass filter of PLL filter.
+           kp_pll = 0.084,  #PLL proportional gain
+           ki_pll = 4.69,   #PLL integral gain
+       )pll (generic function with 1 method)

Finally, define an LCLFilter for the Filter:

julia> filt() = LCLFilter(;
+           lf = 0.08,
+           rf = 0.003,
+           cf = 0.074,
+           lg = 0.2,
+           rg = 0.01,
+       )filt (generic function with 1 method)

Now, use those six functions to define a complete dynamic inverter by getting the static component at bus 103:

julia> gen_103 = get_component(Generator, threebus_sys, "generator-103-1");

using it and our six functions to define a DynamicInverter:

julia> dynamic_inv = DynamicInverter(;
+           name = get_name(gen_103),
+           ω_ref = 1.0, # frequency reference set-point
+           converter = converter_high_power(),
+           outer_control = outer_control(),
+           inner_control = inner_control(),
+           dc_source = dc_source_lv(),
+           freq_estimator = pll(),
+           filter = filt(),
+       )
+DynamicInverter: generator-103-1:
+   name: generator-103-1
+   ω_ref: 1.0
+   converter: AverageConverter
+   outer_control: OuterControl{VirtualInertia, ReactivePowerDroop}
+   inner_control: VoltageModeControl
+   dc_source: FixedDCSource
+   freq_estimator: KauraPLL
+   filter: LCLFilter
+   limiter: nothing
+   base_power: 100.0
+   n_states: 19
+   states: [:θ_oc, :ω_oc, :q_oc, :ξd_ic, :ξq_ic, :γd_ic, :γq_ic, :ϕd_ic, :ϕq_ic, :vd_pll, :vq_pll, :ε_pll, :θ_pll, :ir_cnv, :ii_cnv, :vr_filter, :vi_filter, :ir_filter, :ii_filter]
+   ext: Dict{String, Any}()
+   internal: InfrastructureSystems.InfrastructureSystemsInternal
+   has_supplemental_attributes: false
+   has_time_series: false

and adding it to the System:

julia> add_component!(threebus_sys, dynamic_inv, gen_103)┌ Warning: struct DynamicInverter does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51

Both generators have now been updated with dynamic data. Let's complete the System updates by adding dynamic lines.

Adding Dynamic Lines

Warning

A System must have at least two buses and one branch to run a dynamic simulation in PowerSimulationsDynamics.jl.

Let's review the AC branches currently in the system:

julia> get_components(ACBranch, threebus_sys)ACBranch Counts:
+Line: 3

Notice that we have three static Line components.

Let's also print the first line to review its format:

julia> first(get_components(Line, threebus_sys))Line: BUS 1-BUS 3-i_1:
+   name: BUS 1-BUS 3-i_1
+   available: true
+   active_power_flow: 0.0
+   reactive_power_flow: 0.0
+   arc: Arc: BUS 1 -> BUS 3
+   r: 0.01
+   x: 0.12
+   b: (from = 0.1, to = 0.1)
+   rating: 2.5
+   angle_limits: (min = -1.0472, max = 1.0472)
+   g: (from = 0.0, to = 0.0)
+   services: 0-element Vector{Service}
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

See that these components do not have the fields for dynamic modeling, such as fields for different states.

Let's update that by cycling through these lines and using DynamicBranch to extend each static line with the necessary fields:

julia> for l in get_components(Line, threebus_sys)
+           # create a dynamic branch
+           dyn_branch = DynamicBranch(l)
+           # add dynamic branch to the system, replacing the static branch
+           add_component!(threebus_sys, dyn_branch)
+       end┌ Warning: struct DynamicBranch does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51
+┌ Warning: struct DynamicBranch does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51
+┌ Warning: struct DynamicBranch does not exist in validation configuration file, validation skipped
+@ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/A1orZ/src/validation.jl:51

Take a look at the AC branches in the system again:

julia> branches = get_components(ACBranch, threebus_sys)ACBranch Counts:
+DynamicBranch: 3

Notice that now there are 3 DynamicBranch components instead the Line components.

Let's take a look by printing first one:

julia> first(branches)DynamicBranch: BUS 1-BUS 3-i_1:
+   branch: Line: BUS 1-BUS 3-i_1
+   n_states: 2
+   states: [:Il_R, :Il_I]
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

Observe that this is a wrapper around the static data, with the additional states data for dynamic modeling.

Finally, let's print the System again to summarize our additions:

julia> threebus_sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 19          │
+└───────────────────┴─────────────┘
+
+Static Components
+┌─────────────────┬───────┐
+│ Type            │ Count │
+├─────────────────┼───────┤
+│ ACBus           │ 3     │
+│ Arc             │ 3     │
+│ Area            │ 1     │
+│ DynamicBranch   │ 3     │
+│ LoadZone        │ 1     │
+│ Source          │ 1     │
+│ StandardLoad    │ 3     │
+│ ThermalStandard │ 2     │
+└─────────────────┴───────┘
+
+Dynamic Components
+┌───────────────────────────────────────────────────────────────────────────────
+│ Type                                                                         ⋯
+├───────────────────────────────────────────────────────────────────────────────
+│ DynamicGenerator{OneDOneQMachine, SingleMass, AVRTypeI, TGFixed, PSSFixed}   ⋯
+│ DynamicInverter{AverageConverter, OuterControl{VirtualInertia, ReactivePower ⋯
+└───────────────────────────────────────────────────────────────────────────────
+                                                               2 columns omitted

Verify that the additions were successful, with an added voltage Source, DynamicBranches replacing the static Lines, and two new dynamic components with the generator and inverter models.

Next Steps

In this tutorial, you have updated a static system with a second dynamic data layer. The data you added can enable a phasor-based simulation using the dynamic generator, or a more complex EMT simulation with the additional dynamic inverter and dynamic lines.

Next, you might like to:

diff --git a/previews/PR1200/tutorials/creating_system/index.html b/previews/PR1200/tutorials/creating_system/index.html new file mode 100644 index 0000000000..fd0f692d37 --- /dev/null +++ b/previews/PR1200/tutorials/creating_system/index.html @@ -0,0 +1,183 @@ + +Create and Explore a Power System · PowerSystems.jl

Create and Explore a Power System

Welcome to PowerSystems.jl!

In this tutorial, we will create a power system and add some components to it, including some nodes, a transmission line, load, and both renewable and fossil fuel generators. Then we will retrieve data from the system and explore the system settings.

Setup

To get started, ensure you have followed the installation instructions.

Start Julia from the command line if you haven't already:

$ julia

Load the PowerSystems.jl package:

julia> using PowerSystems

Creating a Power System

In PowerSystems.jl, data is held in a System that holds all of the individual components along with some metadata about the power system itself.

There are many ways to define a System, but let's start with an empty system. All we need to define is a base power of 100 MVA for per-unitization.

julia> sys = System(100.0)System
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 0           │
+└───────────────────┴─────────────┘

Notice that this system is a 60 Hz system with a base power of 100 MVA.

Now, let's add some components to our system.

Adding Buses

We'll start by creating some buses. By referring to the documentation for ACBus, notice that we need define some basic data, including the bus's unique identifier and name, base voltage, and whether it's a load, generator, or reference bus.

Let's start with a reference bus:

julia> bus1 = ACBus(;
+           number = 1,
+           name = "bus1",
+           bustype = ACBusTypes.REF,
+           angle = 0.0,
+           magnitude = 1.0,
+           voltage_limits = (min = 0.9, max = 1.05),
+           base_voltage = 230.0,
+       );

This bus is on a 230 kV AC transmission network, with an allowable voltage range of 0.9 to 1.05 p.u. We are assuming it is currently operating at 1.0 p.u. voltage and an angle of 0 radians.

Let's add this bus to our System with add_component!:

julia> add_component!(sys, bus1)

We can see the impact this has on the System simply by printing it:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 1           │
+└───────────────────┴─────────────┘
+
+Static Components
+┌───────┬───────┐
+│ Type  │ Count │
+├───────┼───────┤
+│ ACBus │ 1     │
+└───────┴───────┘

Notice that System now shows a summary of components in the system.

Let's create a second bus:

julia> bus2 = ACBus(;
+           number = 2,
+           name = "bus2",
+           bustype = ACBusTypes.PV,
+           angle = 0.0,
+           magnitude = 1.0,
+           voltage_limits = (min = 0.9, max = 1.05),
+           base_voltage = 230.0,
+       );

Notice that we've defined this bus with power and voltage variables, suitable for power flow studies.

Let's also add this to our System:

julia> add_component!(sys, bus2)

Now, let's use show_components to quickly see some basic information about the buses:

julia> show_components(sys, ACBus)ACBus
+┌──────┐
+│ name │
+├──────┤
+│ bus1 │
+│ bus2 │
+└──────┘

Adding a Transmission Line

Let's connect our buses. We'll add a transmission Line between bus1 and bus2.

Warning

When defining a line that isn't attached to a System yet, you must define the thermal rating of the transmission line in per-unit using the base power of the System you plan to connect it to – in this case, 100 MVA.

julia> line = Line(;
+           name = "line1",
+           available = true,
+           active_power_flow = 0.0,
+           reactive_power_flow = 0.0,
+           arc = Arc(; from = bus1, to = bus2),
+           r = 0.00281, # Per-unit
+           x = 0.0281, # Per-unit
+           b = (from = 0.00356, to = 0.00356), # Per-unit
+           rating = 2.0, # Line rating of 200 MVA / System base of 100 MVA
+           angle_limits = (min = -0.7, max = 0.7),
+       );

Note that we also had to define an Arc in the process to define the connection between the two buses.

Let's also add this to our System:

julia> add_component!(sys, line)

Finally, let's check our System summary to see all the network topology components we have added are attached:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 4           │
+└───────────────────┴─────────────┘
+
+Static Components
+┌───────┬───────┐
+│ Type  │ Count │
+├───────┼───────┤
+│ ACBus │ 2     │
+│ Arc   │ 1     │
+│ Line  │ 1     │
+└───────┴───────┘

Adding Loads and Generators

Now that our network topology is complete, we'll start adding components that inject or withdraw power from the network.

Warning

When you define components that aren't attached to a System yet, you must define all fields related to power (with units such as MW, MVA, MVAR, or MW/min) in per-unit using the base_power of the component (with the exception of base_power itself, which is in MVA).

We'll start with defining a 10 MW load to bus1:

julia> load = PowerLoad(;
+           name = "load1",
+           available = true,
+           bus = bus1,
+           active_power = 0.0, # Per-unitized by device base_power
+           reactive_power = 0.0, # Per-unitized by device base_power
+           base_power = 10.0, # MVA
+           max_active_power = 1.0, # 10 MW per-unitized by device base_power
+           max_reactive_power = 0.0,
+       );

Notice that we defined the max_active_power, which is 10 MW, as 1.0 in per-unit using the base_power of 10 MVA. We've also used the bus1 component itself to define where this load is located in the network.

Now add the load to the system:

julia> add_component!(sys, load)

Finally, we'll add two generators: one renewable and one thermal.

We'll add a 5 MW solar power plant to bus2:

julia> solar = RenewableDispatch(;
+           name = "solar1",
+           available = true,
+           bus = bus2,
+           active_power = 0.0, # Per-unitized by device base_power
+           reactive_power = 0.0, # Per-unitized by device base_power
+           rating = 1.0, # 5 MW per-unitized by device base_power
+           prime_mover_type = PrimeMovers.PVe,
+           reactive_power_limits = (min = 0.0, max = 0.05), # 0 MVAR to 0.25 MVAR per-unitized by device base_power
+           power_factor = 1.0,
+           operation_cost = RenewableGenerationCost(nothing),
+           base_power = 5.0, # MVA
+       );

Note that we've used a generic renewable generator to model solar, but we can specify that it is solar through the prime mover.

Finally, we'll also add a 30 MW gas thermal generator:

julia> gas = ThermalStandard(;
+           name = "gas1",
+           available = true,
+           status = true,
+           bus = bus2,
+           active_power = 0.0, # Per-unitized by device base_power
+           reactive_power = 0.0, # Per-unitized by device base_power
+           rating = 1.0, # 30 MW per-unitized by device base_power
+           active_power_limits = (min = 0.2, max = 1.0), # 6 MW to 30 MW per-unitized by device base_power
+           reactive_power_limits = nothing, # Per-unitized by device base_power
+           ramp_limits = (up = 0.2, down = 0.2), # 6 MW/min up or down, per-unitized by device base_power
+           operation_cost = ThermalGenerationCost(nothing),
+           base_power = 30.0, # MVA
+           time_limits = (up = 8.0, down = 8.0), # Hours
+           must_run = false,
+           prime_mover_type = PrimeMovers.CC,
+           fuel = ThermalFuels.NATURAL_GAS,
+       );

This time, let's add these components to our System using add_components! to add them both at the same time:

julia> add_components!(sys, [solar, gas])

Explore the System and its Components

Congratulations! You have built a power system including buses, a transmission line, a load, and different types of generators. Now let's take a look around.

Remember that we can see a summary of our System using the print statement:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ SYSTEM_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 7           │
+└───────────────────┴─────────────┘
+
+Static Components
+┌───────────────────┬───────┐
+│ Type              │ Count │
+├───────────────────┼───────┤
+│ ACBus             │ 2     │
+│ Arc               │ 1     │
+│ Line              │ 1     │
+│ PowerLoad         │ 1     │
+│ RenewableDispatch │ 1     │
+│ ThermalStandard   │ 1     │
+└───────────────────┴───────┘

Now, let's double-check some of our data by retrieving it from the System. Let's use show_components again to get an overview of our renewable generators:

julia> show_components(sys, RenewableDispatch)RenewableDispatch
+┌────────┬───────────┐
+│ name   │ available │
+├────────┼───────────┤
+│ solar1 │ true      │
+└────────┴───────────┘

We just have the one renewable generator named solar1. Use get_component to retrieve it by name:

julia> retrieved_component = get_component(RenewableDispatch, sys, "solar1");

Let's double-check what type of renewable generator this is using a get_ function:

julia> get_prime_mover_type(retrieved_component)PrimeMovers.PVe = 21

Verify that this a PVe, or solar photovoltaic, generator.

Let's also use a get_ function to double-check where this generator is connected in the transmission network:

julia> get_bus(retrieved_component)ACBus: bus2:
+   number: 2
+   name: bus2
+   bustype: ACBusTypes.PV = 2
+   angle: 0.0
+   magnitude: 1.0
+   voltage_limits: (min = 0.9, max = 1.05)
+   base_voltage: 230.0
+   area: nothing
+   load_zone: nothing
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

See that the generator's bus is linked to the actual bus2 component in our System.

These "getter" functions are available for all the data fields in a component.

Tip

Always use the get_* functions to retrieve the data within a component. While in Julia a user can use . to access the fields of a component, we make no guarantees on the stability of field names and locations. We do however promise to keep the getter functions stable. PowerSystems.jl also does many internal data calculations that the getter functions will properly handle for you, as you'll see below.

Changing System Per-Unit Settings

Now, let's use a getter function to look up the solar generator's rating:

julia> get_rating(retrieved_component)0.05
Important

When we defined the solar generator, we defined the rating as 1.0 per-unit with a device base_power of 5.0 MVA. Notice that the rating now reads 0.05. After we attached this component to our System, its power data is being returned to us in the System's units base.

Let's double-check the System's units base:

julia> get_units_base(sys)"SYSTEM_BASE"

SYSTEM_BASE means all power-related (MW, MVA, MVAR, MW/min) component data in the System, except for each component's base_power, is per-unitized by the system base power for consistency.

Check the System's base_power again:

julia> get_base_power(sys)100.0

Notice that when we called get_rating above, the solar generator's rating, 5.0 MW, is being returned as 0.05 = (5 MVA)/(100 MVA) using the system base power.

Instead of using the System base power, let's view everything in MW or MVA – or what we call "NATURAL_UNITS" in PowerSystems.

Change the System's unit system:

julia> set_units_base_system!(sys, "NATURAL_UNITS")[ Info: Unit System changed to UnitSystem.NATURAL_UNITS = 2

Now retrieve the solar generator's rating again:

julia> get_rating(retrieved_component)5.0

Notice that the value is now its "natural" value, 5.0 MVA.

Finally, let's change the System's unit system to the final option, "DEVICE_BASE":

julia> set_units_base_system!(sys, "DEVICE_BASE")[ Info: Unit System changed to UnitSystem.DEVICE_BASE = 1

And retrieve the solar generator's rating once more:

julia> get_rating(retrieved_component)1.0

See that now the data is now 1.0 (5.0 MVA per-unitized by the generator (i.e., the device's) base_power of 5.0 MVA), which is the format we used to originally define the device.

Recall that if you ever need to check a System's settings, including the unit system being used by all the getter functions, you can always just print the System:

julia> sysSystem
+┌───────────────────┬─────────────┐
+│ Property          │ Value       │
+├───────────────────┼─────────────┤
+│ Name              │             │
+│ Description       │             │
+│ System Units Base │ DEVICE_BASE │
+│ Base Power        │ 100.0       │
+│ Base Frequency    │ 60.0        │
+│ Num Components    │ 7           │
+└───────────────────┴─────────────┘
+
+Static Components
+┌───────────────────┬───────┐
+│ Type              │ Count │
+├───────────────────┼───────┤
+│ ACBus             │ 2     │
+│ Arc               │ 1     │
+│ Line              │ 1     │
+│ PowerLoad         │ 1     │
+│ RenewableDispatch │ 1     │
+│ ThermalStandard   │ 1     │
+└───────────────────┴───────┘

See the units base is printed as one of the System properties.

Next Steps

In this tutorial, you manually created a power System, added and then retrieved its components, and modified the System per-unit settings.

Next, you might want to:

diff --git a/previews/PR1200/tutorials/get_component_data/index.html b/previews/PR1200/tutorials/get_component_data/index.html new file mode 100644 index 0000000000..cf758f5d3c --- /dev/null +++ b/previews/PR1200/tutorials/get_component_data/index.html @@ -0,0 +1,502 @@ + +Getting, Setting, and Viewing Data · PowerSystems.jl

Getting, Setting, and Viewing Data

In this tutorial, we will explore the data in a System, including looking at a summary of the system and getting both its components and their data. We will also start checking for time-series data, which we will explore more in the tutorial on Working with Time Series Data.

In Create and Explore a Power System, we created a basic System with nodes, a transmission line, and a few generators. Let's recreate that system if you don't have it already:

PowerSystems provides functional interfaces to all data. The following examples outline the intended approach to accessing data expressed using PowerSystems.

PowerSystems enforces unique name fields between components of a particular concrete type. So, in order to retrieve a specific component, the user must specify the type of the component along with the name and system

Accessing components and their data

julia> get_component(ACBus, sys, "nodeA")ERROR: UndefVarError: `get_component` not defined
julia> get_component(Line, sys, "1")ERROR: UndefVarError: `get_component` not defined

Similarly, you can access all the components of a particular type: *note: the return type of get_components is a FlattenIteratorWrapper, so call collect to get an Array

julia> get_components(ACBus, sys) |> collectERROR: UndefVarError: `get_components` not defined

get_components also works on abstract types:

julia> get_components(Branch, sys) |> collectERROR: UndefVarError: `get_components` not defined

The fields within a component can be accessed using the get_* functions: It's highly recommended that users avoid using the . to access fields since we make no guarantees on the stability field names and locations. We do however promise to keep the accessor functions stable.

julia> bus1 = get_component(ACBus, sys, "nodeA")ERROR: UndefVarError: `get_component` not defined
julia> @show get_name(bus1);ERROR: UndefVarError: `get_name` not defined
julia> @show get_magnitude(bus1);ERROR: UndefVarError: `get_magnitude` not defined

Accessing components stored in the system

<!– PowerSystems.jl implements a wide variety of methods to search for components to aid in the development of models. The code block shows an example of retrieving components through the type hierarchy with the get_components function and exploiting the type hierarchy for modeling purposes.

The default implementation of the function get_components takes the desired device type (concrete or abstract) and the system and it also accepts filter functions for a more refined search. The container is optimized for iteration over abstract or concrete component types as described by the Type Structure. Given the potential size of the return, PowerSystems.jl returns Julia iterators in order to avoid unnecessary memory allocations. –>

julia> using PowerSystems
julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
julia> system = System(joinpath(file_dir, "RTS_GMLC.m"));┌ Error: Matlab parser skipping line number 802 consisting of: + ]; +@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 101 to 1.0468 to match generator set-point +[ Info: Correcting vm in bus 102 to 1.0467 to match generator set-point +[ Info: Correcting vm in bus 107 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 113 to 1.0347 to match generator set-point +[ Info: Correcting vm in bus 115 to 1.0428 to match generator set-point +[ Info: Correcting vm in bus 116 to 1.0461 to match generator set-point +[ Info: Correcting vm in bus 201 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 202 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 207 to 0.9699 to match generator set-point +[ Info: Correcting vm in bus 213 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 215 to 1.0437 to match generator set-point +[ Info: Correcting vm in bus 216 to 1.0473 to match generator set-point +[ Info: Correcting vm in bus 301 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 302 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 307 to 0.9568 to match generator set-point +[ Info: Correcting vm in bus 313 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 315 to 1.0422 to match generator set-point +[ Info: Correcting vm in bus 316 to 1.0449 to match generator set-point +[ Info: Correcting vm in bus 114 to 1.0441 to match generator set-point +[ Info: Correcting vm in bus 214 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 314 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 118 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 122 to 1.0 to match generator set-point +[ Info: extending matpower format with data: areas 3x3 +[ Info: extending matpower format with data: gen_name 158x4 +[ Info: added zero cost function data for dclines +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 5 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 5 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 56 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 56 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 35 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 35 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 55 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 55 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 110 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 110 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 114 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 114 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 60 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 60 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 30 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 30 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 32 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 32 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 6 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 6 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 67 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 67 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 45 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 45 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 117 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 117 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 73 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 73 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 115 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 115 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 112 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 112 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 64 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 64 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 90 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 90 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 4 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 4 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 13 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 13 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 54 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 54 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 63 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 63 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 86 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 86 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 104 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 104 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 91 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 91 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 62 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 62 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 58 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 58 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 52 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 52 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 12 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 12 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 28 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 28 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 75 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 75 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 23 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 23 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 111 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 111 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 92 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 92 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 41 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 41 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 43 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 43 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 11 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 11 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 36 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 36 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 68 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 68 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 69 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 69 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 98 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 98 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 82 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 82 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 85 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 85 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 118 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 118 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 119 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 119 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 39 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 39 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 84 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 84 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 77 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 77 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 7 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 7 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 25 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 25 from 90.0 to 60.0 deg. +[ Info: the voltage setpoint on generator 123 does not match the value at bus 308 +[ Info: the voltage setpoint on generator 117 does not match the value at bus 212 +[ Info: the voltage setpoint on generator 136 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 104 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 122 does not match the value at bus 119 +[ Info: the voltage setpoint on generator 75 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 111 does not match the value at bus 319 +[ Info: the voltage setpoint on generator 148 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 77 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 108 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 76 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 156 does not match the value at bus 303 +[ Info: the voltage setpoint on generator 18 does not match the value at bus 118 +[ Info: the voltage setpoint on generator 116 does not match the value at bus 104 +[ Info: the voltage setpoint on generator 140 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 79 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 141 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 138 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 106 does not match the value at bus 312 +[ Info: the voltage setpoint on generator 109 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 107 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 78 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 105 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 137 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 154 does not match the value at bus 309 +[ Info: the voltage setpoint on generator 121 does not match the value at bus 103 +[ Info: the voltage setpoint on generator 80 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 155 does not match the value at bus 317 +[ Info: the voltage setpoint on generator 97 does not match the value at bus 320 +[ Info: the from bus voltage setpoint on dc line 1 does not match the value at bus 113 +[ Info: the to bus voltage setpoint on dc line 1 does not match the value at bus 316 +[ Info: simplifying pwl cost on generator 110, [0.0, 0.0, 0.312, 0.0, 0.624, 0.0, 0.9359999999999999, 0.0] -> [0.0, 0.0, 0.9359999999999999, 0.0] +[ Info: simplifying pwl cost on generator 114, [0.0, 0.0, 0.0863333, 0.0, 0.1726667, 0.0, 0.259, 0.0] -> [0.0, 0.0, 0.259, 0.0] +[ Info: simplifying pwl cost on generator 123, [0.0, 0.0, 0.3363333, 0.0, 0.6726667000000001, 0.0, 1.0090000000000001, 0.0] -> [0.0, 0.0, 1.0090000000000001, 0.0] +[ Info: simplifying pwl cost on generator 117, [0.3, 0.0, 0.66, 0.0, 1.2, 0.0, 1.6, 0.0] -> [0.3, 0.0, 1.6, 0.0] +[ Info: simplifying pwl cost on generator 136, [0.0, 0.0, 0.091, 0.0, 0.182, 0.0, 0.273, 0.0] -> [0.0, 0.0, 0.273, 0.0] +[ Info: simplifying pwl cost on generator 145, [0.0, 0.0, 0.030333299999999997, 0.0, 0.060666700000000004, 0.0, 0.091, 0.0] -> [0.0, 0.0, 0.091, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 73 +[ Info: simplifying pwl cost on generator 73, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 115, [0.0, 0.0, 0.0843333, 0.0, 0.1686667, 0.0, 0.253, 0.0] -> [0.0, 0.0, 0.253, 0.0] +[ Info: simplifying pwl cost on generator 153, [0.0, 0.0, 0.044000000000000004, 0.0, 0.08800000000000001, 0.0, 0.132, 0.0] -> [0.0, 0.0, 0.132, 0.0] +[ Info: simplifying pwl cost on generator 112, [0.0, 0.0, 0.41700000000000004, 0.0, 0.8340000000000001, 0.0, 1.251, 0.0] -> [0.0, 0.0, 1.251, 0.0] +[ Info: simplifying pwl cost on generator 151, [0.0, 0.0, 0.034333300000000004, 0.0, 0.0686667, 0.0, 0.10300000000000001, 0.0] -> [0.0, 0.0, 0.10300000000000001, 0.0] +[ Info: simplifying pwl cost on generator 90, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 139, [0.0, 0.0, 0.0906667, 0.0, 0.1813333, 0.0, 0.272, 0.0] -> [0.0, 0.0, 0.272, 0.0] +[ Info: simplifying pwl cost on generator 86, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 104, [0.0, 0.0, 0.1723333, 0.0, 0.3446667, 0.0, 0.517, 0.0] -> [0.0, 0.0, 0.517, 0.0] +[ Info: simplifying pwl cost on generator 91, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 158, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 150, [0.0, 0.0, 0.0373333, 0.0, 0.0746667, 0.0, 0.11199999999999999, 0.0] -> [0.0, 0.0, 0.11199999999999999, 0.0] +[ Info: simplifying pwl cost on generator 122, [0.0, 0.0, 0.222, 0.0, 0.444, 0.0, 0.6659999999999999, 0.0] -> [0.0, 0.0, 0.6659999999999999, 0.0] +[ Info: simplifying pwl cost on generator 75, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 111, [0.0, 0.0, 0.6273333, 0.0, 1.2546667, 0.0, 1.882, 0.0] -> [0.0, 0.0, 1.882, 0.0] +[ Info: simplifying pwl cost on generator 148, [0.0, 0.0, 0.0313333, 0.0, 0.0626667, 0.0, 0.094, 0.0] -> [0.0, 0.0, 0.094, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 92 +[ Info: simplifying pwl cost on generator 92, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 98, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 82 +[ Info: simplifying pwl cost on generator 82, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 85, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 118, [0.0, 0.0, 0.08900000000000001, 0.0, 0.17800000000000002, 0.0, 0.267, 0.0] -> [0.0, 0.0, 0.267, 0.0] +[ Info: simplifying pwl cost on generator 119, [0.0, 0.0, 0.0873333, 0.0, 0.1746667, 0.0, 0.262, 0.0] -> [0.0, 0.0, 0.262, 0.0] +[ Info: simplifying pwl cost on generator 125, [0.0, 0.0, 0.2103333, 0.0, 0.4206667, 0.0, 0.631, 0.0] -> [0.0, 0.0, 0.631, 0.0] +[ Info: simplifying pwl cost on generator 130, [0.0, 0.0, 0.2136667, 0.0, 0.4273333, 0.0, 0.6409999999999999, 0.0] -> [0.0, 0.0, 0.6409999999999999, 0.0] +[ Info: simplifying pwl cost on generator 84, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 77, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 95, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 126, [0.0, 0.0, 0.218, 0.0, 0.436, 0.0, 0.654, 0.0] -> [0.0, 0.0, 0.654, 0.0] +[ Info: simplifying pwl cost on generator 108, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +[ Info: simplifying pwl cost on generator 76, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 103, [0.0, 0.0, 0.311, 0.0, 0.622, 0.0, 0.9329999999999999, 0.0] -> [0.0, 0.0, 0.9329999999999999, 0.0] +[ Info: simplifying pwl cost on generator 156, [0.0, 0.0, 2.8233333, 0.0, 5.6466667, 0.0, 8.47, 0.0] -> [0.0, 0.0, 8.47, 0.0] +[ Info: simplifying pwl cost on generator 93, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 124, [0.0, 0.0, 0.33899999999999997, 0.0, 0.6779999999999999, 0.0, 1.0170000000000001, 0.0] -> [0.0, 0.0, 1.0170000000000001, 0.0] +[ Info: simplifying pwl cost on generator 87, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 127, [0.0, 0.0, 0.2233333, 0.0, 0.4466667, 0.0, 0.67, 0.0] -> [0.0, 0.0, 0.67, 0.0] +[ Info: simplifying pwl cost on generator 116, [0.0, 0.0, 0.0893333, 0.0, 0.17866669999999998, 0.0, 0.268, 0.0] -> [0.0, 0.0, 0.268, 0.0] +[ Info: simplifying pwl cost on generator 100, [0.0, 0.0, 0.317, 0.0, 0.634, 0.0, 0.951, 0.0] -> [0.0, 0.0, 0.951, 0.0] +[ Info: simplifying pwl cost on generator 132, [0.0, 0.0, 0.20800000000000002, 0.0, 0.41600000000000004, 0.0, 0.624, 0.0] -> [0.0, 0.0, 0.624, 0.0] +[ Info: simplifying pwl cost on generator 140, [0.0, 0.0, 0.09, 0.0, 0.18, 0.0, 0.27, 0.0] -> [0.0, 0.0, 0.27, 0.0] +[ Info: simplifying pwl cost on generator 79, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 81, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 144, [0.0, 0.0, 0.0313333, 0.0, 0.0626667, 0.0, 0.094, 0.0] -> [0.0, 0.0, 0.094, 0.0] +[ Info: simplifying pwl cost on generator 147, [0.0, 0.0, 0.0323333, 0.0, 0.0646667, 0.0, 0.09699999999999999, 0.0] -> [0.0, 0.0, 0.09699999999999999, 0.0] +┌ Info: Constructing System from Power Models + data["name"] = "RTS_GMLC" + data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +┌ Warning: EnergyReservoirStorage should be defined as a PowerModels storage... Skipping +@ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_models_data.jl:624 +[ Info: Reading branch data +[ Info: Reading shunt data +[ Info: Reading DC Line data +[ Info: Reading storage data
julia> thermal_gens = get_components(ThermalStandard, system)ThermalStandard Counts: +ThermalStandard: 76

It is also possible to execute get_components with abstract types from the abstract tree. For instance, it is possible to retrieve all renewable generators

julia> thermal_gens = get_components(RenewableGen, system)RenewableGen Counts:
+RenewableDispatch: 30
+RenewableNonDispatch: 31

The most common filtering requirement is by component name and for this case the method get_component returns a single component taking the device type, system and name as arguments.

julia> my_thermal_gen = get_component(ThermalStandard, system, "323_CC_1")ThermalStandard: 323_CC_1:
+   name: 323_CC_1
+   available: true
+   status: true
+   bus: ACBus: COMTE
+   active_power: 3.55
+   reactive_power: 0.3741
+   rating: 3.853894134508627
+   active_power_limits: (min = 1.7, max = 3.55)
+   reactive_power_limits: (min = -0.25, max = 1.5)
+   ramp_limits: (up = 0.0414, down = 0.0414)
+   operation_cost: ThermalGenerationCost composed of variable: CostCurve{PiecewisePointCurve}
+   base_power: 100.0
+   time_limits: nothing
+   must_run: false
+   prime_mover_type: PrimeMovers.CC = 4
+   fuel: ThermalFuels.NATURAL_GAS = 7
+   services: 0-element Vector{Service}
+   time_at_status: 10000.0
+   dynamic_injector: nothing
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.SYSTEM_BASE = 0
+   has_supplemental_attributes: false
+   has_time_series: false

Accessing data stored in a component

Using the "dot" access to get a parameter value from a component is actively discouraged, use "getter" functions instead

<!– Using code autogeneration, PowerSystems.jl implements accessor (or "getter") functions to enable the retrieval of parameters defined in the component struct fields. Julia syntax enables access to this data using the "dot" access (e.g. component.field), however this is actively discouraged for two reasons:

  1. We make no guarantees on the stability of component structure definitions. We will maintain version stability on the accessor methods.
  2. Per-unit conversions are made in the return of data from the accessor functions. (see the per-unit section for more details) –>

For example, the my_thermal_gen.active_power_limits parameter of a thermal generator should be accessed as follows:

julia> get_active_power_limits(my_thermal_gen)(min = 1.7, max = 3.55)

You can also view data from all instances of a concrete type in one table with the function show_components. It provides a few options:

  1. View the standard fields by accepting the defaults.
  2. Pass a dictionary where the keys are column names and the values are functions that accept a component as a single argument.
  3. Pass a vector of symbols that are field names of the type.
julia> show_components(system, ThermalStandard)ThermalStandard
+┌─────────────────┬───────────┐
+│ name            │ available │
+├─────────────────┼───────────┤
+│ 322_CT_6        │ true      │
+│ 321_CC_1        │ true      │
+│ 202_STEAM_3     │ true      │
+│ 315_STEAM_1     │ true      │
+│ 223_CT_4        │ true      │
+│ 213_CT_1        │ true      │
+│ 123_STEAM_2     │ true      │
+│ 223_CT_6        │ true      │
+│ 313_CC_1        │ true      │
+│ 202_CT_2        │ true      │
+│ 101_STEAM_3     │ true      │
+│ 302_CT_1        │ true      │
+│ 123_CT_1        │ true      │
+│ 113_CT_3        │ true      │
+│ 302_CT_3        │ true      │
+│ 215_CT_4        │ true      │
+│ 102_STEAM_3     │ true      │
+│ 301_CT_4        │ true      │
+│ 202_CT_1        │ true      │
+│ 113_CT_2        │ true      │
+│ 221_CC_1        │ true      │
+│ 223_CT_5        │ true      │
+│ 315_CT_7        │ true      │
+│ 215_CT_5        │ true      │
+│ 114_SYNC_COND_1 │ true      │
+│ 323_CC_1        │ true      │
+│ 101_STEAM_4     │ true      │
+│ 113_CT_1        │ true      │
+│ 318_CC_1        │ true      │
+│ 223_STEAM_3     │ true      │
+│ 307_CT_2        │ true      │
+│ 213_CT_2        │ true      │
+│ 113_CT_4        │ true      │
+│ 315_STEAM_3     │ true      │
+│ 118_CC_1        │ true      │
+│ 315_CT_8        │ true      │
+│ 302_CT_2        │ true      │
+│ 218_CC_1        │ true      │
+│ 213_CC_3        │ true      │
+│ 115_STEAM_3     │ true      │
+│ 323_CC_2        │ true      │
+│ 101_CT_1        │ true      │
+│ 314_SYNC_COND_1 │ true      │
+│ 115_STEAM_2     │ true      │
+│ 101_CT_2        │ true      │
+│ 322_CT_5        │ true      │
+│ 214_SYNC_COND_1 │ true      │
+│ 315_STEAM_5     │ true      │
+│ 207_CT_2        │ true      │
+│ 123_STEAM_3     │ true      │
+│ 223_STEAM_1     │ true      │
+│ 123_CT_5        │ true      │
+│ 301_CT_1        │ true      │
+│ 223_STEAM_2     │ true      │
+│ 202_STEAM_4     │ true      │
+│ 116_STEAM_1     │ true      │
+│ 315_STEAM_4     │ true      │
+│ 315_STEAM_2     │ true      │
+│ 115_STEAM_1     │ true      │
+│ 121_NUCLEAR_1   │ true      │
+│ 102_CT_2        │ true      │
+│ 123_CT_4        │ true      │
+│ 207_CT_1        │ true      │
+│ 316_STEAM_1     │ true      │
+│ 301_CT_3        │ true      │
+│ 102_CT_1        │ true      │
+│ 216_STEAM_1     │ true      │
+│ 315_CT_6        │ true      │
+│ 201_CT_2        │ true      │
+│ 201_STEAM_3     │ true      │
+│ 201_CT_1        │ true      │
+│ 301_CT_2        │ true      │
+│ 302_CT_4        │ true      │
+│ 307_CT_1        │ true      │
+│ 102_STEAM_4     │ true      │
+│ 107_CC_1        │ true      │
+└─────────────────┴───────────┘
julia> show_components(system, ThermalStandard, Dict("has_time_series" => x -> has_time_series(x)))ThermalStandard +┌─────────────────┬───────────┬─────────────────┐ +│ name │ available │ has_time_series │ +├─────────────────┼───────────┼─────────────────┤ +│ 322_CT_6 │ true │ false │ +│ 321_CC_1 │ true │ false │ +│ 202_STEAM_3 │ true │ false │ +│ 315_STEAM_1 │ true │ false │ +│ 223_CT_4 │ true │ false │ +│ 213_CT_1 │ true │ false │ +│ 123_STEAM_2 │ true │ false │ +│ 223_CT_6 │ true │ false │ +│ 313_CC_1 │ true │ false │ +│ 202_CT_2 │ true │ false │ +│ 101_STEAM_3 │ true │ false │ +│ 302_CT_1 │ true │ false │ +│ 123_CT_1 │ true │ false │ +│ 113_CT_3 │ true │ false │ +│ 302_CT_3 │ true │ false │ +│ 215_CT_4 │ true │ false │ +│ 102_STEAM_3 │ true │ false │ +│ 301_CT_4 │ true │ false │ +│ 202_CT_1 │ true │ false │ +│ 113_CT_2 │ true │ false │ +│ 221_CC_1 │ true │ false │ +│ 223_CT_5 │ true │ false │ +│ 315_CT_7 │ true │ false │ +│ 215_CT_5 │ true │ false │ +│ 114_SYNC_COND_1 │ true │ false │ +│ 323_CC_1 │ true │ false │ +│ 101_STEAM_4 │ true │ false │ +│ 113_CT_1 │ true │ false │ +│ 318_CC_1 │ true │ false │ +│ 223_STEAM_3 │ true │ false │ +│ 307_CT_2 │ true │ false │ +│ 213_CT_2 │ true │ false │ +│ 113_CT_4 │ true │ false │ +│ 315_STEAM_3 │ true │ false │ +│ 118_CC_1 │ true │ false │ +│ 315_CT_8 │ true │ false │ +│ 302_CT_2 │ true │ false │ +│ 218_CC_1 │ true │ false │ +│ 213_CC_3 │ true │ false │ +│ 115_STEAM_3 │ true │ false │ +│ 323_CC_2 │ true │ false │ +│ 101_CT_1 │ true │ false │ +│ 314_SYNC_COND_1 │ true │ false │ +│ 115_STEAM_2 │ true │ false │ +│ 101_CT_2 │ true │ false │ +│ 322_CT_5 │ true │ false │ +│ 214_SYNC_COND_1 │ true │ false │ +│ 315_STEAM_5 │ true │ false │ +│ 207_CT_2 │ true │ false │ +│ 123_STEAM_3 │ true │ false │ +│ 223_STEAM_1 │ true │ false │ +│ 123_CT_5 │ true │ false │ +│ 301_CT_1 │ true │ false │ +│ 223_STEAM_2 │ true │ false │ +│ 202_STEAM_4 │ true │ false │ +│ 116_STEAM_1 │ true │ false │ +│ 315_STEAM_4 │ true │ false │ +│ 315_STEAM_2 │ true │ false │ +│ 115_STEAM_1 │ true │ false │ +│ 121_NUCLEAR_1 │ true │ false │ +│ 102_CT_2 │ true │ false │ +│ 123_CT_4 │ true │ false │ +│ 207_CT_1 │ true │ false │ +│ 316_STEAM_1 │ true │ false │ +│ 301_CT_3 │ true │ false │ +│ 102_CT_1 │ true │ false │ +│ 216_STEAM_1 │ true │ false │ +│ 315_CT_6 │ true │ false │ +│ 201_CT_2 │ true │ false │ +│ 201_STEAM_3 │ true │ false │ +│ 201_CT_1 │ true │ false │ +│ 301_CT_2 │ true │ false │ +│ 302_CT_4 │ true │ false │ +│ 307_CT_1 │ true │ false │ +│ 102_STEAM_4 │ true │ false │ +│ 107_CC_1 │ true │ false │ +└─────────────────┴───────────┴─────────────────┘
julia> show_components(system, ThermalStandard, [:active_power, :reactive_power])ThermalStandard +┌─────────────────┬───────────┬──────────────┬────────────────┐ +│ name │ available │ active_power │ reactive_power │ +├─────────────────┼───────────┼──────────────┼────────────────┤ +│ 322_CT_6 │ true │ 0.55 │ -0.0973 │ +│ 321_CC_1 │ true │ 3.55 │ -0.0334 │ +│ 202_STEAM_3 │ true │ 0.76 │ 0.0201 │ +│ 315_STEAM_1 │ true │ 0.05 │ 0.06 │ +│ 223_CT_4 │ true │ 0.22 │ 0.0024 │ +│ 213_CT_1 │ true │ 0.55 │ 0.0923 │ +│ 123_STEAM_2 │ true │ 1.55 │ -0.0519 │ +│ 223_CT_6 │ true │ 0.22 │ 0.0024 │ +│ 313_CC_1 │ true │ 3.55 │ 1.5 │ +│ 202_CT_2 │ true │ 0.08 │ 0.0513 │ +│ 101_STEAM_3 │ true │ 0.76 │ 0.0014 │ +│ 302_CT_1 │ true │ 0.08 │ 0.0616 │ +│ 123_CT_1 │ true │ 0.55 │ 0.0062 │ +│ 113_CT_3 │ true │ 0.55 │ 0.19 │ +│ 302_CT_3 │ true │ 0.55 │ 0.1099 │ +│ 215_CT_4 │ true │ 0.55 │ 0.19 │ +│ 102_STEAM_3 │ true │ 0.76 │ -0.0231 │ +│ 301_CT_4 │ true │ 0.44 │ 0.1653 │ +│ 202_CT_1 │ true │ 0.08 │ 0.0513 │ +│ 113_CT_2 │ true │ 0.55 │ 0.19 │ +│ 221_CC_1 │ true │ 2.9697 │ -0.0752 │ +│ 223_CT_5 │ true │ 0.22 │ 0.0024 │ +│ 315_CT_7 │ true │ 0.55 │ 0.19 │ +│ 215_CT_5 │ true │ 0.55 │ 0.19 │ +│ 114_SYNC_COND_1 │ true │ 0.0 │ 1.0332 │ +│ 323_CC_1 │ true │ 3.55 │ 0.3741 │ +│ 101_STEAM_4 │ true │ 0.76 │ 0.0014 │ +│ 113_CT_1 │ true │ 0.55 │ 0.19 │ +│ 318_CC_1 │ true │ 3.55 │ 0.6312 │ +│ 223_STEAM_3 │ true │ 3.5 │ 0.2059 │ +│ 307_CT_2 │ true │ 0.55 │ 0.19 │ +│ 213_CT_2 │ true │ 0.55 │ 0.0923 │ +│ 113_CT_4 │ true │ 0.55 │ 0.19 │ +│ 315_STEAM_3 │ true │ 0.05 │ 0.06 │ +│ 118_CC_1 │ true │ 3.55 │ 0.6843 │ +│ 315_CT_8 │ true │ 0.55 │ 0.6 │ +│ 302_CT_2 │ true │ 0.08 │ 0.0616 │ +│ 218_CC_1 │ true │ 3.55 │ 0.603 │ +│ 213_CC_3 │ true │ 3.55 │ 1.358 │ +│ 115_STEAM_3 │ true │ 1.55 │ 0.8 │ +│ 323_CC_2 │ true │ 3.55 │ 0.3741 │ +│ 101_CT_1 │ true │ 0.08 │ 0.0496 │ +│ 314_SYNC_COND_1 │ true │ 0.0 │ 1.6663 │ +│ 115_STEAM_2 │ true │ 0.05 │ 0.06 │ +│ 101_CT_2 │ true │ 0.08 │ 0.0496 │ +│ 322_CT_5 │ true │ 0.55 │ -0.0973 │ +│ 214_SYNC_COND_1 │ true │ 0.0 │ 1.2528 │ +│ 315_STEAM_5 │ true │ 0.05 │ 0.06 │ +│ 207_CT_2 │ true │ 0.55 │ 0.19 │ +│ 123_STEAM_3 │ true │ 3.5 │ 0.2841 │ +│ 223_STEAM_1 │ true │ 1.55 │ -0.1031 │ +│ 123_CT_5 │ true │ 0.55 │ 0.0062 │ +│ 301_CT_1 │ true │ 0.08 │ 0.0795 │ +│ 223_STEAM_2 │ true │ 1.55 │ -0.1031 │ +│ 202_STEAM_4 │ true │ 0.76 │ 0.0201 │ +│ 116_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 315_STEAM_4 │ true │ 0.05 │ 0.06 │ +│ 315_STEAM_2 │ true │ 0.05 │ 0.06 │ +│ 115_STEAM_1 │ true │ 0.05 │ 0.06 │ +│ 121_NUCLEAR_1 │ true │ 4.0 │ -0.2187 │ +│ 102_CT_2 │ true │ 0.08 │ 0.0488 │ +│ 123_CT_4 │ true │ 0.55 │ 0.0062 │ +│ 207_CT_1 │ true │ 0.55 │ 0.19 │ +│ 316_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 301_CT_3 │ true │ 0.44 │ 0.1653 │ +│ 102_CT_1 │ true │ 0.08 │ 0.0488 │ +│ 216_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 315_CT_6 │ true │ 0.55 │ 0.19 │ +│ 201_CT_2 │ true │ 0.08 │ 0.0529 │ +│ 201_STEAM_3 │ true │ 0.76 │ 0.0699 │ +│ 201_CT_1 │ true │ 0.08 │ 0.0529 │ +│ 301_CT_2 │ true │ 0.08 │ 0.0795 │ +│ 302_CT_4 │ true │ 0.55 │ 0.1099 │ +│ 307_CT_1 │ true │ 0.55 │ 0.19 │ +│ 102_STEAM_4 │ true │ 0.76 │ -0.0231 │ +│ 107_CC_1 │ true │ 3.55 │ 0.4951 │ +└─────────────────┴───────────┴──────────────┴────────────────┘

to do: add a link in the system that MD explanation to these examples

diff --git a/previews/PR1200/tutorials/tutorials_data/OMIB.raw b/previews/PR1200/tutorials/tutorials_data/OMIB.raw new file mode 100644 index 0000000000..ff7d8bdfff --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/OMIB.raw @@ -0,0 +1,27 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 17:05:49 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 230, 3, 1, 1, 1, 1.05, 0, 1.06, 0.94, 1.06, 0.94 + 102, 'BUS 2 ', 230, 2, 1, 1, 1, 1.04, 0, 1.06, 0.94, 1.06, 0.94 +0 / END OF BUS DATA, BEGIN LOAD DATA +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 102, 1, 50, 0, 100, -100, 1.00, 0, 100, 0, 1, 0, 0, 1, 1, 100, 100, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 102, 1, 0.00, 0.05, 0.000, 100, 100, 100, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA +0 / END OF TRANSFORMER DATA, BEGIN AREA DATA +0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA +0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/RTS-GMLC.RAW b/previews/PR1200/tutorials/tutorials_data/RTS-GMLC.RAW new file mode 100644 index 0000000000..a5834841a1 --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/RTS-GMLC.RAW @@ -0,0 +1,500 @@ + 0, 100.00, 33, 0, 0, 60.00 / November 07, 2017 19:41:38; Simulator Version 19; BuildDate 2017_9_5 + + + 101,'ABEL ', 138.0000,2, 1, 11, 1,1.04777002, -7.741520, 1.10000, 0.90000, 1.10000, 0.90000 + 102,'ADAMS ', 138.0000,2, 1, 12, 1,1.04782999, -7.817840, 1.10000, 0.90000, 1.10000, 0.90000 + 103,'ADLER ', 138.0000,2, 1, 11, 1,1.01084995, -7.210900, 1.10000, 0.90000, 1.10000, 0.90000 + 104,'AGRICOLA ', 138.0000,2, 1, 11, 1,1.01765001, -10.566140, 1.10000, 0.90000, 1.10000, 0.90000 + 105,'AIKEN ', 138.0000,1, 1, 11, 1,1.03568006, -10.708870, 1.10000, 0.90000, 1.10000, 0.90000 + 106,'ALBER ', 138.0000,1, 1, 12, 1,1.03242004, -13.279440, 1.10000, 0.90000, 1.10000, 0.90000 + 107,'ALDER ', 138.0000,2, 1, 12, 1,1.03744996, -11.276730, 1.10000, 0.90000, 1.10000, 0.90000 + 108,'ALGER ', 138.0000,1, 1, 12, 1,1.01023996, -13.749670, 1.10000, 0.90000, 1.10000, 0.90000 + 109,'ALI ', 138.0000,1, 1, 13, 1,1.02610004, -8.815240, 1.10000, 0.90000, 1.10000, 0.90000 + 110,'ALLEN ', 138.0000,1, 1, 13, 1,1.04999995, -10.620630, 1.10000, 0.90000, 1.10000, 0.90000 + 111,'ANNA ', 230.0000,1, 1, 13, 1,1.02763999, -3.916740, 1.10000, 0.90000, 1.10000, 0.90000 + 112,'ARCHER ', 230.0000,1, 1, 13, 1,1.02023995, -2.424240, 1.10000, 0.90000, 1.10000, 0.90000 + 113,'ARNE ', 230.0000,3, 1, 14, 1,1.03470004, 0.000000, 1.10000, 0.90000, 1.10000, 0.90000 + 114,'ARNOLD ', 230.0000,2, 1, 16, 1,1.04401004, -1.730560, 1.10000, 0.90000, 1.10000, 0.90000 + 115,'ARTHUR ', 230.0000,2, 1, 16, 1,1.04334998, 7.959700, 1.10000, 0.90000, 1.10000, 0.90000 + 116,'ASSER ', 230.0000,2, 1, 16, 1,1.04565001, 7.569290, 1.10000, 0.90000, 1.10000, 0.90000 + 117,'ASTON ', 230.0000,1, 1, 17, 1,1.04782999, 11.434170, 1.10000, 0.90000, 1.10000, 0.90000 + 118,'ASTOR ', 230.0000,2, 1, 17, 1,1.04999995, 12.524570, 1.10000, 0.90000, 1.10000, 0.90000 + 119,'ATTAR ', 230.0000,2, 1, 15, 1,1.03962004, 6.657770, 1.10000, 0.90000, 1.10000, 0.90000 + 120,'ATTILA ', 230.0000,1, 1, 15, 1,1.04399002, 7.740600, 1.10000, 0.90000, 1.10000, 0.90000 + 121,'ATTLEE ', 230.0000,2, 1, 17, 1,1.04999995, 13.086530, 1.10000, 0.90000, 1.10000, 0.90000 + 122,'AUBREY ', 230.0000,2, 1, 17, 1,1.04999995, 18.949779, 1.10000, 0.90000, 1.10000, 0.90000 + 123,'AUSTEN ', 230.0000,2, 1, 15, 1,1.04999995, 9.056170, 1.10000, 0.90000, 1.10000, 0.90000 + 124,'AVERY ', 230.0000,1, 1, 16, 1,1.01154995, 2.383390, 1.10000, 0.90000, 1.10000, 0.90000 + 201,'BACH ', 138.0000,2, 2, 21, 1,1.04841006, -10.689730, 1.10000, 0.90000, 1.10000, 0.90000 + 202,'BACON ', 138.0000,2, 2, 22, 1,1.04843998, -10.759060, 1.10000, 0.90000, 1.10000, 0.90000 + 203,'BAFFIN ', 138.0000,1, 2, 21, 1,1.01885998, -10.474530, 1.10000, 0.90000, 1.10000, 0.90000 + 204,'BAILEY ', 138.0000,1, 2, 21, 1,1.01890004, -13.484790, 1.10000, 0.90000, 1.10000, 0.90000 + 205,'BAIN ', 138.0000,1, 2, 21, 1,1.03603005, -13.611870, 1.10000, 0.90000, 1.10000, 0.90000 + 206,'BAJER ', 138.0000,1, 2, 22, 1,1.03259003, -16.156720, 1.10000, 0.90000, 1.10000, 0.90000 + 207,'BAKER ', 138.0000,2, 2, 22, 1,1.03972995, -13.466060, 1.10000, 0.90000, 1.10000, 0.90000 + 208,'BALCH ', 138.0000,1, 2, 22, 1,1.01203001, -16.223590, 1.10000, 0.90000, 1.10000, 0.90000 + 209,'BALZAC ', 138.0000,1, 2, 23, 1,1.02780998, -11.724090, 1.10000, 0.90000, 1.10000, 0.90000 + 210,'BANKS ', 138.0000,1, 2, 23, 1,1.04999995, -13.479860, 1.10000, 0.90000, 1.10000, 0.90000 + 211,'BARDEEN ', 230.0000,1, 2, 23, 1,1.02734995, -6.933360, 1.10000, 0.90000, 1.10000, 0.90000 + 212,'BARKLA ', 230.0000,2, 2, 23, 1,1.01920998, -5.253340, 1.10000, 0.90000, 1.10000, 0.90000 + 213,'BARLOW ', 230.0000,2, 2, 24, 1,1.03752005, -3.215100, 1.10000, 0.90000, 1.10000, 0.90000 + 214,'BARRY ', 230.0000,2, 2, 26, 1,1.04334998, -4.685190, 1.10000, 0.90000, 1.10000, 0.90000 + 215,'BARTON ', 230.0000,2, 2, 26, 1,1.04326999, 4.633510, 1.10000, 0.90000, 1.10000, 0.90000 + 216,'BASOV ', 230.0000,2, 2, 26, 1,1.04556000, 4.700090, 1.10000, 0.90000, 1.10000, 0.90000 + 217,'BATES ', 230.0000,1, 2, 27, 1,1.04847002, 8.818390, 1.10000, 0.90000, 1.10000, 0.90000 + 218,'BAYLE ', 230.0000,2, 2, 27, 1,1.04999995, 9.994730, 1.10000, 0.90000, 1.10000, 0.90000 + 219,'BEDE ', 230.0000,1, 2, 25, 1,1.03945994, 4.212330, 1.10000, 0.90000, 1.10000, 0.90000 + 220,'BEETHOVEN ', 230.0000,1, 2, 25, 1,1.04380000, 5.664490, 1.10000, 0.90000, 1.10000, 0.90000 + 221,'BEHRING ', 230.0000,2, 2, 27, 1,1.04999995, 10.632090, 1.10000, 0.90000, 1.10000, 0.90000 + 222,'BELL ', 230.0000,2, 2, 27, 1,1.04999995, 16.432030, 1.10000, 0.90000, 1.10000, 0.90000 + 223,'BLOCH ', 230.0000,2, 2, 25, 1,1.04999995, 7.181510, 1.10000, 0.90000, 1.10000, 0.90000 + 224,'BORDET ', 230.0000,1, 2, 26, 1,1.01455998, -0.960050, 1.10000, 0.90000, 1.10000, 0.90000 + 301,'CABELL ', 138.0000,2, 3, 31, 1,1.04859996, -9.348210, 1.10000, 0.90000, 1.10000, 0.90000 + 302,'CABOT ', 138.0000,2, 3, 32, 1,1.04864001, -9.431000, 1.10000, 0.90000, 1.10000, 0.90000 + 303,'CAESAR ', 138.0000,2, 3, 31, 1,1.01045001, -8.576890, 1.10000, 0.90000, 1.10000, 0.90000 + 304,'CAINE ', 138.0000,1, 3, 31, 1,1.01785004, -12.187840, 1.10000, 0.90000, 1.10000, 0.90000 + 305,'CALVIN ', 138.0000,1, 3, 31, 1,1.03609002, -12.350050, 1.10000, 0.90000, 1.10000, 0.90000 + 306,'CAMUS ', 138.0000,1, 3, 32, 1,1.03260005, -14.942050, 1.10000, 0.90000, 1.10000, 0.90000 + 307,'CAREW ', 138.0000,2, 3, 32, 1,1.03804004, -12.547950, 1.10000, 0.90000, 1.10000, 0.90000 + 308,'CARREL ', 138.0000,2, 3, 32, 1,1.01056004, -15.182870, 1.10000, 0.90000, 1.10000, 0.90000 + 309,'CARTER ', 138.0000,2, 3, 33, 1,1.02578998, -10.446170, 1.10000, 0.90000, 1.10000, 0.90000 + 310,'CARUSO ', 138.0000,2, 3, 33, 1,1.04999995, -12.301170, 1.10000, 0.90000, 1.10000, 0.90000 + 311,'CARY ', 230.0000,1, 3, 33, 1,1.02830005, -5.740690, 1.10000, 0.90000, 1.10000, 0.90000 + 312,'CAXTON ', 230.0000,2, 3, 33, 1,1.01900005, -4.146040, 1.10000, 0.90000, 1.10000, 0.90000 + 313,'CECIL ', 230.0000,2, 3, 34, 1,1.03802001, -2.415130, 1.10000, 0.90000, 1.10000, 0.90000 + 314,'CHAIN ', 230.0000,2, 3, 36, 1,1.04630995, -3.207930, 1.10000, 0.90000, 1.10000, 0.90000 + 315,'CHASE ', 230.0000,2, 3, 36, 1,1.04299998, 7.050880, 1.10000, 0.90000, 1.10000, 0.90000 + 316,'CHIFA ', 230.0000,2, 3, 36, 1,1.04558003, 6.598750, 1.10000, 0.90000, 1.10000, 0.90000 + 317,'CHUHSI ', 230.0000,2, 3, 37, 1,1.04785001, 10.344180, 1.10000, 0.90000, 1.10000, 0.90000 + 318,'CLARK ', 230.0000,2, 3, 37, 1,1.04999995, 11.342620, 1.10000, 0.90000, 1.10000, 0.90000 + 319,'CLAY ', 230.0000,2, 3, 35, 1,1.03953004, 5.915390, 1.10000, 0.90000, 1.10000, 0.90000 + 320,'CLIVE ', 230.0000,2, 3, 35, 1,1.04389000, 7.197090, 1.10000, 0.90000, 1.10000, 0.90000 + 321,'COBB ', 230.0000,2, 3, 37, 1,1.04999995, 12.341220, 1.10000, 0.90000, 1.10000, 0.90000 + 322,'COLE ', 230.0000,2, 3, 37, 1,1.04999995, 18.069141, 1.10000, 0.90000, 1.10000, 0.90000 + 323,'COMTE ', 230.0000,2, 3, 35, 1,1.04999995, 8.621120, 1.10000, 0.90000, 1.10000, 0.90000 + 324,'CURIE ', 230.0000,2, 3, 36, 1,1.01046002, 1.306060, 1.10000, 0.90000, 1.10000, 0.90000 + 325,'CURTISS ', 230.0000,1, 3, 35, 1,1.04986000, 8.993320, 1.10000, 0.90000, 1.10000, 0.90000 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101,'1 ',1, 1, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 102,'1 ',1, 1, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 103,'1 ',1, 1, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 104,'1 ',1, 1, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 105,'1 ',1, 1, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 106,'1 ',1, 1, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 107,'1 ',1, 1, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 108,'1 ',1, 1, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 109,'1 ',1, 1, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 110,'1 ',1, 1, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 113,'1 ',1, 1, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 114,'1 ',1, 1, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 115,'1 ',1, 1, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 116,'1 ',1, 1, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 118,'1 ',1, 1, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 119,'1 ',1, 1, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 120,'1 ',1, 1, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 201,'1 ',1, 2, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 202,'1 ',1, 2, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 203,'1 ',1, 2, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 204,'1 ',1, 2, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 205,'1 ',1, 2, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 206,'1 ',1, 2, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 207,'1 ',1, 2, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 208,'1 ',1, 2, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 209,'1 ',1, 2, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 210,'1 ',1, 2, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 213,'1 ',1, 2, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 214,'1 ',1, 2, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 215,'1 ',1, 2, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 216,'1 ',1, 2, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 218,'1 ',1, 2, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 219,'1 ',1, 2, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 220,'1 ',1, 2, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 301,'1 ',1, 3, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 302,'1 ',1, 3, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 303,'1 ',1, 3, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 304,'1 ',1, 3, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 305,'1 ',1, 3, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 306,'1 ',1, 3, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 307,'1 ',1, 3, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 308,'1 ',1, 3, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 309,'1 ',1, 3, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 310,'1 ',1, 3, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 313,'1 ',1, 3, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 314,'1 ',1, 3, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 315,'1 ',1, 3, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 316,'1 ',1, 3, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 318,'1 ',1, 3, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 319,'1 ',1, 3, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 320,'1 ',1, 3, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 101,'1 ', 8.000, 4.960, 10.000, 0.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'2 ', 8.000, 4.960, 10.000, 0.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'3 ', 76.000, 0.140, 30.000, -25.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'4 ', 76.000, 0.140, 30.000, -25.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'1 ', 8.000, 4.880, 10.000, 0.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'2 ', 8.000, 4.880, 10.000, 0.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'3 ', 76.000, -2.310, 30.000, -25.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'4 ', 76.000, -2.310, 30.000, -25.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 103,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 61.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 104,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 107,'1 ', 355.000, 49.510, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'1 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'2 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'3 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'4 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 93.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'DC', 0.000, 0.000, 0.000, 0.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 114,'1 ', 0.000, 103.320, 200.000, -50.000,1.04410, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'1 ', 5.000, 6.000, 6.000, 0.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'2 ', 5.000, 6.000, 6.000, 0.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'3 ', 155.000, 80.000, 80.000, -50.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 116,'1 ', 155.000, 80.000, 80.000, -50.000,1.04610, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'1 ', 355.000, 68.430, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 11.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'9 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 11.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'A ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 10.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'B ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 4.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 119,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 121,'1 ', 400.000, -21.870, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 400.000, 396.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'1 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'2 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'3 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'4 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'5 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'6 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 713.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'1 ', 155.000, -5.190, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'2 ', 350.000, 28.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 350.000, 140.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'3 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'4 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'5 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'1 ', 8.000, 5.290, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'2 ', 8.000, 5.290, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'3 ', 76.000, 6.990, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'4 ', 50.000, 4.150, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'1 ', 8.000, 5.130, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'2 ', 8.000, 5.130, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'3 ', 76.000, 2.010, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'4 ', 76.000, 2.010, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 207,'1 ', 55.000, 19.000, 19.000, -15.000,0.96990, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 207,'2 ', 55.000, 19.000, 19.000, -15.000,0.96990, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 212,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 200.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'1 ', 355.000, 135.800, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'2 ', 55.000, 9.230, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'3 ', 55.000, 9.230, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 13.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 214,'1 ', 0.000, 125.280, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'1 ', 55.000, 19.000, 19.000, -15.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'2 ', 55.000, 19.000, 19.000, -15.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'3 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'4 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'5 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 125.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 216,'1 ', 155.000, 80.000, 80.000, -50.000,1.04730, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 218,'1 ', 355.000, 60.300, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 221,'1 ', 296.970, -7.520, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'1 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'2 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'3 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'4 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'5 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'6 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'1 ', 155.000, -10.310, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'2 ', 155.000, -10.310, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'3 ', 350.000, 20.590, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 350.000, 140.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'4 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'5 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'6 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'1 ', 8.000, 7.950, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'2 ', 8.000, 7.950, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'3 ', 44.000, 16.530, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'4 ', 44.000, 16.530, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'1 ', 8.000, 6.160, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'2 ', 8.000, 6.160, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'3 ', 55.000, 10.990, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'4 ', 55.000, 10.990, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 303,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 847.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 307,'1 ', 55.000, 19.000, 19.000, -15.000,0.95680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 307,'2 ', 55.000, 19.000, 19.000, -15.000,0.95680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 308,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 100.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 309,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 148.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 310,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 310,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 312,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 94.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'1 ', 355.000, 150.000, 150.000, -25.000,1.03500, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 95.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 93.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 101.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 63.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 65.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 67.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 64.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'9 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 63.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'A ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 64.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'B ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'C ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 62.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'D ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'E ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 65.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'F ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'G ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'H ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'1 ', 0.000, 166.630, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 92.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'1 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'2 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'3 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'4 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'5 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'6 ', 55.000, 19.000, 19.000, -15.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'7 ', 55.000, 19.000, 19.000, -15.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'8 ', 55.000, 60.000, 60.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 316,'1 ', 155.000, 80.000, 80.000, -50.000,1.04490, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 316,'DC', 0.000, 0.000, 0.000, 0.000,1.04490, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 317,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 799.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 318,'1 ', 355.000, 63.120, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 319,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 188.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 28.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 28.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 321,'1 ', 355.000, -3.340, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'1 ', 55.000, -9.730, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'2 ', 55.000, -9.730, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'3 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'4 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'5 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'6 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 323,'1 ', 355.000, 37.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 323,'2 ', 355.000, 37.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 49.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 102,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 101, 103,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 101, 105,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 102, 104,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 102, 106,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 103, 109,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 104, 109,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 105, 110,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 106, 110,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 107, 108,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 107, 203,'1 ',4.20000E-2,1.61000E-1,4.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 42.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 108, 109,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 108, 110,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 111, 113,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 111, 114,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 112, 113,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 112, 123,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 113, 123,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 113, 215,'1 ',1.00000E-2,7.50000E-2,1.58000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 52.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 114, 116,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 116,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 121,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 121,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 124,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 116, 117,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 116, 119,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 117, 118,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 117, 122,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 118, 121,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 118, 121,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 119, 120,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 119, 120,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 120, 123,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 120, 123,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 121, 122,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 123, 217,'1 ',1.00000E-2,7.40000E-2,1.55000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 51.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 202,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 203,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 205,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 202, 204,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 202, 206,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 203, 209,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 204, 209,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 205, 210,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 206, 210,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 207, 208,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 208, 209,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 208, 210,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 211, 213,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 211, 214,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 212, 213,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 212, 223,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 213, 223,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 214, 216,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 216,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 221,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 221,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 224,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 216, 217,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 216, 219,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 217, 218,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 217, 222,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 218, 221,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 218, 221,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 219, 220,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 219, 220,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 220, 223,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 220, 223,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 221, 222,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 302,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 303,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 305,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 302, 304,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 302, 306,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 303, 309,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 304, 309,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 305, 310,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 306, 310,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 307, 308,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 308, 309,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 308, 310,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 311, 313,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 311, 314,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 312, 313,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 312, 323,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 313, 323,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 314, 316,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 316,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 321,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 321,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 324,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 316, 317,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 316, 319,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 317, 318,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 317, 322,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 223,'1 ',1.30000E-2,1.04000E-1,2.18000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 72.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 321,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 321,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 319, 320,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 319, 320,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 320, 323,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 320, 323,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 321, 322,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 323, 325,'1 ',1.00000E-7,9.00000E-3,0.00000E-0, 722.00, 722.00, 722.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 325, 121,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 +0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA + 103, 124, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 109, 111, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 109, 112, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 110, 111, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 110, 112, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 203, 224, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 209, 211, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 209, 212, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 210, 211, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 210, 212, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 303, 324, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 309, 311, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 309, 312, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 310, 311, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 310, 312, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 +0 / END OF TRANSFORMER DATA, BEGIN AREA DATA + 1, 0, 0.000, 1.000,'1 ' + 2, 0, 0.000, 1.000,'2 ' + 3, 0, 0.000, 1.000,'3 ' +0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA +0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA + 1,'1 ' + 11,'11 ' + 12,'12 ' + 13,'13 ' + 14,'14 ' + 15,'15 ' + 16,'16 ' + 17,'17 ' + 21,'21 ' + 22,'22 ' + 23,'23 ' + 24,'24 ' + 25,'25 ' + 26,'26 ' + 27,'27 ' + 31,'31 ' + 32,'32 ' + 33,'33 ' + 34,'34 ' + 35,'35 ' + 36,'36 ' + 37,'37 ' +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA + 1,'1' +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA + 106,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 + 206,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 + 306,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 +0 /END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 /END OF GNE DEVICE DATA +Q \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/RTS_GMLC.m b/previews/PR1200/tutorials/tutorials_data/RTS_GMLC.m new file mode 100644 index 0000000000..11294de5de --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/RTS_GMLC.m @@ -0,0 +1,802 @@ +function mpc = RTS_GMLC + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% RTS-GMLC Test Case %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%% By: Clayton Barrows, Ali Ehlen, Matt O Connell, %%%%%%%%%%%%%%%% + %%%%%%%%%% Dheepak Krishnamurthy, Brendan McBennett, and Aaron Bloom %%%%%%%%%%% + %%%%%%%%%%%%%%%%%%% National Renewable Energy Lab, Golden CO %%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %% MATPOWER Case Format : Version 2 + mpc.version = '2'; + + %%----- Power Flow Data -----%% + %% system MVA base + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 101; + 2 201; + 3 301; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 101 2 108.0 22.0 0.0 0.0 1 1.04777 -7.74152 138.0 11 1.05 0.95 + 102 2 97.0 20.0 0.0 0.0 1 1.04783 -7.81784 138.0 12 1.05 0.95 + 103 1 180.0 37.0 0.0 0.0 1 1.01085 -7.21090 138.0 11 1.05 0.95 + 104 1 74.0 15.0 0.0 0.0 1 1.01765 -10.56614 138.0 11 1.05 0.95 + 105 1 71.0 14.0 0.0 0.0 1 1.03568 -10.70887 138.0 11 1.05 0.95 + 106 1 136.0 28.0 0.0 -100.0 1 1.03242 -13.27944 138.0 12 1.05 0.95 + 107 2 125.0 25.0 0.0 0.0 1 1.03745 -11.27673 138.0 12 1.05 0.95 + 108 1 171.0 35.0 0.0 0.0 1 1.01024 -13.74967 138.0 12 1.05 0.95 + 109 1 175.0 36.0 0.0 0.0 1 1.02610 -8.81524 138.0 13 1.05 0.95 + 110 1 195.0 40.0 0.0 0.0 1 1.05000 -10.62063 138.0 13 1.05 0.95 + 111 1 0.0 0.0 0.0 0.0 1 1.02764 -3.91674 230.0 13 1.05 0.95 + 112 1 0.0 0.0 0.0 0.0 1 1.02024 -2.42424 230.0 13 1.05 0.95 + 113 3 265.0 54.0 0.0 0.0 1 1.03943 0.00000 230.0 14 1.05 0.95 + 114 2 194.0 39.0 0.0 0.0 1 1.04401 -1.73056 230.0 16 1.05 0.95 + 115 2 317.0 64.0 0.0 0.0 1 1.04335 7.95970 230.0 16 1.05 0.95 + 116 2 100.0 20.0 0.0 0.0 1 1.04565 7.56929 230.0 16 1.05 0.95 + 117 1 0.0 0.0 0.0 0.0 1 1.04783 11.43417 230.0 17 1.05 0.95 + 118 2 333.0 68.0 0.0 0.0 1 1.05000 12.52457 230.0 17 1.05 0.95 + 119 1 181.0 37.0 0.0 0.0 1 1.03962 6.65777 230.0 15 1.05 0.95 + 120 1 128.0 26.0 0.0 0.0 1 1.04399 7.74060 230.0 15 1.05 0.95 + 121 2 0.0 0.0 0.0 0.0 1 1.05000 13.08653 230.0 17 1.05 0.95 + 122 2 0.0 0.0 0.0 0.0 1 1.05000 18.94978 230.0 17 1.05 0.95 + 123 2 0.0 0.0 0.0 0.0 1 1.05000 9.05617 230.0 15 1.05 0.95 + 124 1 0.0 0.0 0.0 0.0 1 1.01155 2.38339 230.0 16 1.05 0.95 + 201 2 108.0 22.0 0.0 0.0 2 1.04841 -10.68973 138.0 21 1.05 0.95 + 202 2 97.0 20.0 0.0 0.0 2 1.04844 -10.75906 138.0 22 1.05 0.95 + 203 1 180.0 37.0 0.0 0.0 2 1.01886 -10.47453 138.0 21 1.05 0.95 + 204 1 74.0 15.0 0.0 0.0 2 1.01890 -13.48479 138.0 21 1.05 0.95 + 205 1 71.0 14.0 0.0 0.0 2 1.03603 -13.61187 138.0 21 1.05 0.95 + 206 1 136.0 28.0 0.0 -100.0 2 1.03259 -16.15672 138.0 22 1.05 0.95 + 207 2 125.0 25.0 0.0 0.0 2 1.03973 -13.46606 138.0 22 1.05 0.95 + 208 1 171.0 35.0 0.0 0.0 2 1.01203 -16.22359 138.0 22 1.05 0.95 + 209 1 175.0 36.0 0.0 0.0 2 1.02781 -11.72409 138.0 23 1.05 0.95 + 210 1 195.0 40.0 0.0 0.0 2 1.05000 -13.47986 138.0 23 1.05 0.95 + 211 1 0.0 0.0 0.0 0.0 2 1.02735 -6.93336 230.0 23 1.05 0.95 + 212 1 0.0 0.0 0.0 0.0 2 1.01921 -5.25334 230.0 23 1.05 0.95 + 213 2 265.0 54.0 0.0 0.0 2 1.03752 -3.21510 230.0 24 1.05 0.95 + 214 2 194.0 39.0 0.0 0.0 2 1.04335 -4.68519 230.0 26 1.05 0.95 + 215 2 317.0 64.0 0.0 0.0 2 1.04327 4.63351 230.0 26 1.05 0.95 + 216 2 100.0 20.0 0.0 0.0 2 1.04556 4.70009 230.0 26 1.05 0.95 + 217 1 0.0 0.0 0.0 0.0 2 1.04847 8.81839 230.0 27 1.05 0.95 + 218 2 333.0 68.0 0.0 0.0 2 1.05000 9.99473 230.0 27 1.05 0.95 + 219 1 181.0 37.0 0.0 0.0 2 1.03946 4.21233 230.0 25 1.05 0.95 + 220 1 128.0 26.0 0.0 0.0 2 1.04380 5.66449 230.0 25 1.05 0.95 + 221 2 0.0 0.0 0.0 0.0 2 1.05000 10.63209 230.0 27 1.05 0.95 + 222 2 0.0 0.0 0.0 0.0 2 1.05000 16.43203 230.0 27 1.05 0.95 + 223 2 0.0 0.0 0.0 0.0 2 1.05000 7.18151 230.0 25 1.05 0.95 + 224 1 0.0 0.0 0.0 0.0 2 1.01456 -0.96005 230.0 26 1.05 0.95 + 301 2 108.0 22.0 0.0 0.0 3 1.04860 -9.34821 138.0 31 1.05 0.95 + 302 2 97.0 20.0 0.0 0.0 3 1.04864 -9.43100 138.0 32 1.05 0.95 + 303 1 180.0 37.0 0.0 0.0 3 1.01045 -8.57689 138.0 31 1.05 0.95 + 304 1 74.0 15.0 0.0 0.0 3 1.01785 -12.18784 138.0 31 1.05 0.95 + 305 1 71.0 14.0 0.0 0.0 3 1.03609 -12.35005 138.0 31 1.05 0.95 + 306 1 136.0 28.0 0.0 -100.0 3 1.03260 -14.94205 138.0 32 1.05 0.95 + 307 2 125.0 25.0 0.0 0.0 3 1.03804 -12.54795 138.0 32 1.05 0.95 + 308 1 171.0 35.0 0.0 0.0 3 1.01056 -15.18287 138.0 32 1.05 0.95 + 309 1 175.0 36.0 0.0 0.0 3 1.02579 -10.44617 138.0 33 1.05 0.95 + 310 1 195.0 40.0 0.0 0.0 3 1.05000 -12.30117 138.0 33 1.05 0.95 + 311 1 0.0 0.0 0.0 0.0 3 1.02830 -5.74069 230.0 33 1.05 0.95 + 312 1 0.0 0.0 0.0 0.0 3 1.01900 -4.14604 230.0 33 1.05 0.95 + 313 2 265.0 54.0 0.0 0.0 3 1.03802 -2.41513 230.0 34 1.05 0.95 + 314 2 194.0 39.0 0.0 0.0 3 1.04631 -3.20793 230.0 36 1.05 0.95 + 315 2 317.0 64.0 0.0 0.0 3 1.04300 7.05088 230.0 36 1.05 0.95 + 316 2 100.0 20.0 0.0 0.0 3 1.04558 6.59875 230.0 36 1.05 0.95 + 317 1 0.0 0.0 0.0 0.0 3 1.04785 10.34418 230.0 37 1.05 0.95 + 318 2 333.0 68.0 0.0 0.0 3 1.05000 11.34262 230.0 37 1.05 0.95 + 319 1 181.0 37.0 0.0 0.0 3 1.03953 5.91539 230.0 35 1.05 0.95 + 320 1 128.0 26.0 0.0 0.0 3 1.04389 7.19709 230.0 35 1.05 0.95 + 321 2 0.0 0.0 0.0 0.0 3 1.05000 12.34122 230.0 37 1.05 0.95 + 322 2 0.0 0.0 0.0 0.0 3 1.05000 18.06914 230.0 37 1.05 0.95 + 323 2 0.0 0.0 0.0 0.0 3 1.05000 8.62112 230.0 35 1.05 0.95 + 324 1 0.0 0.0 0.0 0.0 3 1.01046 1.30606 230.0 36 1.05 0.95 + 325 1 0.0 0.0 0.0 0.0 3 1.04986 8.99332 230.0 35 1.05 0.95 + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 101 8.0 4.96 10 0 1.04680 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 101 8.0 4.96 10 0 1.04680 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 101 76.0 0.14 30 -25 1.04680 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 101 76.0 0.14 30 -25 1.04680 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 102 8.0 4.88 10 0 1.04670 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 102 8.0 4.88 10 0 1.04670 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 102 76.0 -2.31 30 -25 1.04670 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 102 76.0 -2.31 30 -25 1.04670 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 107 355.0 49.51 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 115 5.0 6.0 6 0 1.04280 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 115 5.0 6.0 6 0 1.04280 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 115 155.0 80.0 80 -50 1.04280 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 116 155.0 80.0 80 -50 1.04610 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 118 355.0 68.43 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 123 155.0 -5.19 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 123 350.0 28.41 150 -25 1.05000 100.0 1 350.0 140 0.0 0.0 0.0 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 201 8.0 5.29 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 201 8.0 5.29 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 201 76.0 6.99 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 202 8.0 5.13 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 202 8.0 5.13 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 202 76.0 2.01 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 202 76.0 2.01 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 207 55.0 19.0 19 -15 0.96990 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 207 55.0 19.0 19 -15 0.96990 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 213 355.0 135.8 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 213 55.0 9.23 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 213 55.0 9.23 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 215 55.0 19.0 19 -15 1.04370 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 215 55.0 19.0 19 -15 1.04370 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 216 155.0 80.0 80 -50 1.04730 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 218 355.0 60.3 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 221 296.97 -7.52 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 223 155.0 -10.31 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 223 155.0 -10.31 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 223 350.0 20.59 150 -25 1.05000 100.0 1 350.0 140 0.0 0.0 0.0 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 301 8.0 7.95 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 301 8.0 7.95 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 301 44.0 16.53 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 301 44.0 16.53 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 302 8.0 6.16 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 302 8.0 6.16 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 302 55.0 10.99 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 302 55.0 10.99 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 307 55.0 19.0 19 -15 0.95680 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 307 55.0 19.0 19 -15 0.95680 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 313 355.0 150.0 150 -25 1.00000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 55.0 19.0 19 -15 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 315 55.0 19.0 19 -15 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 315 55.0 60.0 60 0 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 316 155.0 80.0 80 -50 1.04490 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 318 355.0 63.12 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 321 355.0 -3.34 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 322 55.0 -9.73 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 322 55.0 -9.73 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 323 355.0 37.41 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 323 355.0 37.41 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 114 0.0 103.32 200 -50 1.04410 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 121 400.0 -21.87 200 -50 1.05000 100.0 1 400.0 396 0.0 0.0 0.0 0.0 0.0 0.0 20.0 20.0 20.0 20.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 201 50.0 4.15 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 214 0.0 125.28 200 -50 1.05000 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 314 0.0 166.63 200 -50 1.00000 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 95.1 0 0.0 0.0 0.0 0.0 0.0 0.0 95.1 95.1 95.1 95.1 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 92.7 0 0.0 0.0 0.0 0.0 0.0 0.0 92.7 92.7 92.7 92.7 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 93.3 0 0.0 0.0 0.0 0.0 0.0 0.0 93.3 93.3 93.3 93.3 0.0 + 310 0.0 0.0 0 0 1.00000 100.0 0 51.7 0 0.0 0.0 0.0 0.0 0.0 0.0 51.7 51.7 51.7 51.7 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 49.7 0 0.0 0.0 0.0 0.0 0.0 0.0 49.7 49.7 49.7 49.7 0.0 + 312 0.0 0.0 0 0 1.00000 100.0 0 94.1 0 0.0 0.0 0.0 0.0 0.0 0.0 94.1 94.1 94.1 94.1 0.0 + 310 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 51.0 0 0.0 0.0 0.0 0.0 0.0 0.0 51.0 51.0 51.0 51.0 0.0 + 113 0.0 0.0 0 0 1.03470 100.0 0 93.6 0 0.0 0.0 0.0 0.0 0.0 0.0 93.6 93.6 93.6 93.6 0.0 + 319 0.0 0.0 0 0 1.00000 100.0 0 188.2 0 0.0 0.0 0.0 0.0 0.0 0.0 188.2 188.2 188.2 188.2 0.0 + 215 0.0 0.0 0 0 1.04370 100.0 0 125.1 0 0.0 0.0 0.0 0.0 0.0 0.0 125.1 125.1 125.1 125.1 0.0 + 102 0.0 0.0 0 0 1.04670 100.0 0 25.6 0 0.0 0.0 0.0 0.0 0.0 0.0 25.6 25.6 25.6 25.6 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 25.9 0 0.0 0.0 0.0 0.0 0.0 0.0 25.9 25.9 25.9 25.9 0.0 + 102 0.0 0.0 0 0 1.04670 100.0 0 25.3 0 0.0 0.0 0.0 0.0 0.0 0.0 25.3 25.3 25.3 25.3 0.0 + 104 0.0 0.0 0 0 1.00000 100.0 0 26.8 0 0.0 0.0 0.0 0.0 0.0 0.0 26.8 26.8 26.8 26.8 0.0 + 212 0.0 0.0 0 0 1.00000 100.0 0 200.0 30 0.0 0.0 0.0 0.0 0.0 0.0 20.0 20.0 20.0 20.0 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 26.7 0 0.0 0.0 0.0 0.0 0.0 0.0 26.7 26.7 26.7 26.7 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 26.2 0 0.0 0.0 0.0 0.0 0.0 0.0 26.2 26.2 26.2 26.2 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 25.8 0 0.0 0.0 0.0 0.0 0.0 0.0 25.8 25.8 25.8 25.8 0.0 + 103 0.0 0.0 0 0 1.00000 100.0 0 61.5 0 0.0 0.0 0.0 0.0 0.0 0.0 61.5 61.5 61.5 61.5 0.0 + 119 0.0 0.0 0 0 1.00000 100.0 0 66.6 0 0.0 0.0 0.0 0.0 0.0 0.0 66.6 66.6 66.6 66.6 0.0 + 308 0.0 0.0 0 0 1.00000 100.0 0 100.9 0 0.0 0.0 0.0 0.0 0.0 0.0 100.9 100.9 100.9 100.9 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 101.7 0 0.0 0.0 0.0 0.0 0.0 0.0 101.7 101.7 101.7 101.7 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 63.1 0 0.0 0.0 0.0 0.0 0.0 0.0 63.1 63.1 63.1 63.1 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 65.4 0 0.0 0.0 0.0 0.0 0.0 0.0 65.4 65.4 65.4 65.4 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 67.0 0 0.0 0.0 0.0 0.0 0.0 0.0 67.0 67.0 67.0 67.0 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 64.8 0 0.0 0.0 0.0 0.0 0.0 0.0 64.8 64.8 64.8 64.8 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 63.8 0 0.0 0.0 0.0 0.0 0.0 0.0 63.8 63.8 63.8 63.8 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 64.1 0 0.0 0.0 0.0 0.0 0.0 0.0 64.1 64.1 64.1 64.1 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 66.6 0 0.0 0.0 0.0 0.0 0.0 0.0 66.6 66.6 66.6 66.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 62.4 0 0.0 0.0 0.0 0.0 0.0 0.0 62.4 62.4 62.4 62.4 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 66.9 0 0.0 0.0 0.0 0.0 0.0 0.0 66.9 66.9 66.9 66.9 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 65.2 0 0.0 0.0 0.0 0.0 0.0 0.0 65.2 65.2 65.2 65.2 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 27.8 0 0.0 0.0 0.0 0.0 0.0 0.0 27.8 27.8 27.8 27.8 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.3 0 0.0 0.0 0.0 0.0 0.0 0.0 27.3 27.3 27.3 27.3 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.0 0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 27.0 27.0 27.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 28.3 0 0.0 0.0 0.0 0.0 0.0 0.0 28.3 28.3 28.3 28.3 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 27.2 0 0.0 0.0 0.0 0.0 0.0 0.0 27.2 27.2 27.2 27.2 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.0 0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 27.0 27.0 27.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 28.2 0 0.0 0.0 0.0 0.0 0.0 0.0 28.2 28.2 28.2 28.2 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.3 0 0.0 0.0 0.0 0.0 0.0 0.0 9.3 9.3 9.3 9.3 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.7 0 0.0 0.0 0.0 0.0 0.0 0.0 9.7 9.7 9.7 9.7 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.4 0 0.0 0.0 0.0 0.0 0.0 0.0 9.4 9.4 9.4 9.4 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.1 0 0.0 0.0 0.0 0.0 0.0 0.0 9.1 9.1 9.1 9.1 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.1 0 0.0 0.0 0.0 0.0 0.0 0.0 9.1 9.1 9.1 9.1 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.7 0 0.0 0.0 0.0 0.0 0.0 0.0 9.7 9.7 9.7 9.7 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 9.4 0 0.0 0.0 0.0 0.0 0.0 0.0 9.4 9.4 9.4 9.4 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 11.8 0 0.0 0.0 0.0 0.0 0.0 0.0 11.8 11.8 11.8 11.8 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 11.2 0 0.0 0.0 0.0 0.0 0.0 0.0 11.2 11.2 11.2 11.2 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 10.3 0 0.0 0.0 0.0 0.0 0.0 0.0 10.3 10.3 10.3 10.3 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 4.5 0 0.0 0.0 0.0 0.0 0.0 0.0 4.5 4.5 4.5 4.5 0.0 + 213 0.0 0.0 0 0 1.05000 100.0 0 13.2 0 0.0 0.0 0.0 0.0 0.0 0.0 13.2 13.2 13.2 13.2 0.0 + 309 0.0 0.0 0 0 1.00000 100.0 0 148.3 0 0.0 0.0 0.0 0.0 0.0 0.0 148.3 148.3 148.3 148.3 0.0 + 317 0.0 0.0 0 0 1.00000 100.0 0 799.1 0 0.0 0.0 0.0 0.0 0.0 0.0 799.1 799.1 799.1 799.1 0.0 + 303 0.0 0.0 0 0 1.00000 100.0 0 847.0 0 0.0 0.0 0.0 0.0 0.0 0.0 847.0 847.0 847.0 847.0 0.0 + 122 0.0 0.0 0 0 1.00000 100.0 0 713.5 0 0.0 0.0 0.0 0.0 0.0 0.0 713.5 713.5 713.5 713.5 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 101 102 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 101 103 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 101 105 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 102 104 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 102 106 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 103 109 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 103 124 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 104 109 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 105 110 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 106 110 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 107 108 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 107 203 0.04200 0.16100 0.04400 175 175 175 0.0 0.0 1 -90 90 + 108 109 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 108 110 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 109 111 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 109 112 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 110 111 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 110 112 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 111 113 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 111 114 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 112 113 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 112 123 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 113 123 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 113 215 0.01000 0.07500 0.15800 500 500 500 0.0 0.0 1 -90 90 + 114 116 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 115 116 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 115 121 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 115 121 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 115 124 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 116 117 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 116 119 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 117 118 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 117 122 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 118 121 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 118 121 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 119 120 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 119 120 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 120 123 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 120 123 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 121 122 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 123 217 0.01000 0.07400 0.15500 500 500 500 0.0 0.0 1 -90 90 + 201 202 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 201 203 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 201 205 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 202 204 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 202 206 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 203 209 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 203 224 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 204 209 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 205 210 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 206 210 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 207 208 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 208 209 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 208 210 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 209 211 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 209 212 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 210 211 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 210 212 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 211 213 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 211 214 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 212 213 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 212 223 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 213 223 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 214 216 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 215 216 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 215 221 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 215 221 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 215 224 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 216 217 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 216 219 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 217 218 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 217 222 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 218 221 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 218 221 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 219 220 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 219 220 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 220 223 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 220 223 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 221 222 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 301 302 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 301 303 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 301 305 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 302 304 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 302 306 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 303 309 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 303 324 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 304 309 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 305 310 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 306 310 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 307 308 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 308 309 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 308 310 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 309 311 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 309 312 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 310 311 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 310 312 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 311 313 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 311 314 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 312 313 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 312 323 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 313 323 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 314 316 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 315 316 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 315 321 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 315 321 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 315 324 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 316 317 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 316 319 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 317 318 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 317 322 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 318 321 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 318 321 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 319 320 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 319 320 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 320 323 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 320 323 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 321 322 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 325 121 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 318 223 0.01300 0.10400 0.21800 500 500 500 0.0 0.0 1 -90 90 + 323 325 0.00000 0.00900 0.00000 722 722 722 1.0 0.0 1 -90 90 + ]; + + %%----- OPF Data -----%% + %% generator cost data + % 1 startup shutdown n x1 y1 ... xn yn + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 1 51.74700 51.74700 4 8.00000 1085.77625 12.00000 1477.23196 16.00000 1869.51562 20.00000 2298.06357 + 1 51.74700 51.74700 4 8.00000 1085.77625 12.00000 1477.23196 16.00000 1869.51562 20.00000 2298.06357 + 1 11172.01435 11172.01435 4 30.00000 841.57942 45.33333 1059.17805 60.66667 1319.40176 76.00000 1596.51343 + 1 11172.01435 11172.01435 4 30.00000 841.57942 45.33333 1059.17805 60.66667 1319.40176 76.00000 1596.51343 + 1 51.74700 51.74700 4 8.00000 1212.03893 12.00000 1567.93410 16.00000 1946.59795 20.00000 2344.92565 + 1 51.74700 51.74700 4 8.00000 1212.03893 12.00000 1567.93410 16.00000 1946.59795 20.00000 2344.92565 + 1 11172.01435 11172.01435 4 30.00000 735.09774 45.33333 1018.20610 60.66667 1337.84562 76.00000 1683.09260 + 1 11172.01435 11172.01435 4 30.00000 735.09774 45.33333 1018.20610 60.66667 1337.84562 76.00000 1683.09260 + 1 28046.68102 28046.68102 4 170.00000 4772.49548 231.66667 6203.57553 293.33333 7855.66994 355.00000 9738.36720 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 703.75920 703.75920 4 5.00000 897.29298 7.33333 1187.80064 9.66667 1479.58817 12.00000 1791.41904 + 1 703.75920 703.75920 4 5.00000 897.29298 7.33333 1187.80064 9.66667 1479.58817 12.00000 1791.41904 + 1 22784.79562 22784.79562 4 62.00000 1500.19723 93.00000 2132.59734 124.00000 2829.87580 155.00000 3668.44490 + 1 22784.79562 22784.79562 4 62.00000 1735.06998 93.00000 2345.31970 124.00000 3011.01092 155.00000 3751.14842 + 1 28046.68102 28046.68102 4 170.00000 4795.62444 231.66667 6187.87116 293.33333 7899.41412 355.00000 9901.24820 + 1 22784.79562 22784.79562 4 62.00000 1437.41596 93.00000 2039.73610 124.00000 2751.75964 155.00000 3775.85462 + 1 36749.81356 36749.81356 4 140.00000 3582.87481 210.00000 4981.72313 280.00000 6497.03117 350.00000 8137.67767 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 51.74700 51.74700 4 8.00000 1157.22851 12.00000 1487.12598 16.00000 1822.73633 20.00000 2269.08525 + 1 51.74700 51.74700 4 8.00000 1157.22851 12.00000 1487.12598 16.00000 1822.73633 20.00000 2269.08525 + 1 11172.01435 11172.01435 4 30.00000 823.75848 45.33333 1163.94880 60.66667 1523.42575 76.00000 1918.39660 + 1 51.74700 51.74700 4 8.00000 1131.23082 12.00000 1455.62241 16.00000 1805.10095 20.00000 2196.47386 + 1 51.74700 51.74700 4 8.00000 1131.23082 12.00000 1455.62241 16.00000 1805.10095 20.00000 2196.47386 + 1 11172.01435 11172.01435 4 30.00000 751.26977 45.33333 1075.05834 60.66667 1401.47249 76.00000 1819.68454 + 1 11172.01435 11172.01435 4 30.00000 751.26977 45.33333 1075.05834 60.66667 1401.47249 76.00000 1819.68454 + 1 5665.23443 5665.23443 4 22.00000 1116.10638 33.00000 1492.56031 44.00000 1897.96238 55.00000 2366.39182 + 1 5665.23443 5665.23443 4 22.00000 1116.10638 33.00000 1492.56031 44.00000 1897.96238 55.00000 2366.39182 + 1 28046.68102 28046.68102 4 170.00000 5170.31357 231.66667 6688.64875 293.33333 8361.59810 355.00000 10458.83751 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1216.84757 33.00000 1501.96739 44.00000 1800.72745 55.00000 2160.80453 + 1 5665.23443 5665.23443 4 22.00000 1216.84757 33.00000 1501.96739 44.00000 1800.72745 55.00000 2160.80453 + 1 22784.79562 22784.79562 4 62.00000 1426.14416 93.00000 2001.92316 124.00000 2679.08278 155.00000 3412.47031 + 1 28046.68102 28046.68102 4 170.00000 7523.51994 231.66667 8815.08767 293.33333 10151.48151 355.00000 11987.19523 + 1 28046.68102 28046.68102 4 170.00000 4551.11830 231.66667 5977.40411 293.33333 7600.73310 355.00000 9828.37578 + 1 22784.79562 22784.79562 4 62.00000 1422.99854 93.00000 2013.06389 124.00000 2623.44468 155.00000 3256.43459 + 1 22784.79562 22784.79562 4 62.00000 1422.99854 93.00000 2013.06389 124.00000 2623.44468 155.00000 3256.43459 + 1 36749.81356 36749.81356 4 140.00000 3323.31912 210.00000 4643.59043 280.00000 6258.48853 350.00000 7981.70748 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 5665.23443 5665.23443 4 22.00000 1119.44162 33.00000 1432.61161 44.00000 1754.76108 55.00000 2235.93283 + 1 5665.23443 5665.23443 4 22.00000 1119.44162 33.00000 1432.61161 44.00000 1754.76108 55.00000 2235.93283 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 5665.23443 5665.23443 4 22.00000 1316.56254 33.00000 1688.27018 44.00000 2110.47669 55.00000 2535.46257 + 1 5665.23443 5665.23443 4 22.00000 1316.56254 33.00000 1688.27018 44.00000 2110.47669 55.00000 2535.46257 + 1 5665.23443 5665.23443 4 22.00000 1141.93307 33.00000 1448.77467 44.00000 1770.19723 55.00000 2160.41970 + 1 5665.23443 5665.23443 4 22.00000 1141.93307 33.00000 1448.77467 44.00000 1770.19723 55.00000 2160.41970 + 1 28046.68102 28046.68102 4 170.00000 5243.00459 231.66667 6213.11865 293.33333 7863.05566 355.00000 9944.47408 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 22784.79562 22784.79562 4 62.00000 1552.62418 93.00000 2207.24021 124.00000 2867.16447 155.00000 3712.68014 + 1 28046.68102 28046.68102 4 170.00000 5254.89948 231.66667 6910.34987 293.33333 8592.40827 355.00000 10536.71149 + 1 28046.68102 28046.68102 4 170.00000 4775.79962 231.66667 6177.63481 293.33333 7775.31462 355.00000 9868.71865 + 1 5665.23443 5665.23443 4 22.00000 1031.69929 33.00000 1288.38408 44.00000 1579.87505 55.00000 1886.71665 + 1 5665.23443 5665.23443 4 22.00000 1031.69929 33.00000 1288.38408 44.00000 1579.87505 55.00000 1886.71665 + 1 28046.68102 28046.68102 4 170.00000 4877.56703 231.66667 6507.36825 293.33333 8374.48424 355.00000 10331.01276 + 1 28046.68102 28046.68102 4 170.00000 4877.56703 231.66667 6507.36825 293.33333 8374.48424 355.00000 10331.01276 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 63999.82230 63999.82230 4 396.00000 3208.98600 397.33333 3219.79067 398.66667 3230.59533 400.00000 3241.40000 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 31.70000 0 63.40000 0 95.10000 0 + 1 0.00000 0.00000 4 0.00000 0 30.90000 0 61.80000 0 92.70000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 31.10000 0 62.20000 0 93.30000 0 + 1 0.00000 0.00000 4 0.00000 0 17.23333 0 34.46667 0 51.70000 0 + 1 0.00000 0.00000 4 0.00000 0 16.56667 0 33.13333 0 49.70000 0 + 1 0.00000 0.00000 4 0.00000 0 31.36667 0 62.73333 0 94.10000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.00000 0 34.00000 0 51.00000 0 + 1 0.00000 0.00000 4 0.00000 0 31.20000 0 62.40000 0 93.60000 0 + 1 0.00000 0.00000 4 0.00000 0 62.73333 0 125.46667 0 188.20000 0 + 1 0.00000 0.00000 4 0.00000 0 41.70000 0 83.40000 0 125.10000 0 + 1 0.00000 0.00000 4 0.00000 0 8.53333 0 17.06667 0 25.60000 0 + 1 0.00000 0.00000 4 0.00000 0 8.63333 0 17.26667 0 25.90000 0 + 1 0.00000 0.00000 4 0.00000 0 8.43333 0 16.86667 0 25.30000 0 + 1 0.00000 0.00000 4 0.00000 0 8.93333 0 17.86667 0 26.80000 0 + 1 10000.00000 0.00000 4 30.00000 0.00000 66.00000 0.00000 120.00000 0.00000 160.00000 0.00000 + 1 0.00000 0.00000 4 0.00000 0 8.90000 0 17.80000 0 26.70000 0 + 1 0.00000 0.00000 4 0.00000 0 8.73333 0 17.46667 0 26.20000 0 + 1 0.00000 0.00000 4 0.00000 0 8.60000 0 17.20000 0 25.80000 0 + 1 0.00000 0.00000 4 0.00000 0 20.50000 0 41.00000 0 61.50000 0 + 1 0.00000 0.00000 4 0.00000 0 22.20000 0 44.40000 0 66.60000 0 + 1 0.00000 0.00000 4 0.00000 0 33.63333 0 67.26667 0 100.90000 0 + 1 0.00000 0.00000 4 0.00000 0 33.90000 0 67.80000 0 101.70000 0 + 1 0.00000 0.00000 4 0.00000 0 21.03333 0 42.06667 0 63.10000 0 + 1 0.00000 0.00000 4 0.00000 0 21.80000 0 43.60000 0 65.40000 0 + 1 0.00000 0.00000 4 0.00000 0 22.33333 0 44.66667 0 67.00000 0 + 1 0.00000 0.00000 4 0.00000 0 21.60000 0 43.20000 0 64.80000 0 + 1 0.00000 0.00000 4 0.00000 0 21.26667 0 42.53333 0 63.80000 0 + 1 0.00000 0.00000 4 0.00000 0 21.36667 0 42.73333 0 64.10000 0 + 1 0.00000 0.00000 4 0.00000 0 22.20000 0 44.40000 0 66.60000 0 + 1 0.00000 0.00000 4 0.00000 0 20.80000 0 41.60000 0 62.40000 0 + 1 0.00000 0.00000 4 0.00000 0 22.30000 0 44.60000 0 66.90000 0 + 1 0.00000 0.00000 4 0.00000 0 21.73333 0 43.46667 0 65.20000 0 + 1 0.00000 0.00000 4 0.00000 0 9.26667 0 18.53333 0 27.80000 0 + 1 0.00000 0.00000 4 0.00000 0 9.10000 0 18.20000 0 27.30000 0 + 1 0.00000 0.00000 4 0.00000 0 9.00000 0 18.00000 0 27.00000 0 + 1 0.00000 0.00000 4 0.00000 0 9.43333 0 18.86667 0 28.30000 0 + 1 0.00000 0.00000 4 0.00000 0 9.06667 0 18.13333 0 27.20000 0 + 1 0.00000 0.00000 4 0.00000 0 9.00000 0 18.00000 0 27.00000 0 + 1 0.00000 0.00000 4 0.00000 0 9.40000 0 18.80000 0 28.20000 0 + 1 0.00000 0.00000 4 0.00000 0 3.10000 0 6.20000 0 9.30000 0 + 1 0.00000 0.00000 4 0.00000 0 3.23333 0 6.46667 0 9.70000 0 + 1 0.00000 0.00000 4 0.00000 0 3.13333 0 6.26667 0 9.40000 0 + 1 0.00000 0.00000 4 0.00000 0 3.03333 0 6.06667 0 9.10000 0 + 1 0.00000 0.00000 4 0.00000 0 3.03333 0 6.06667 0 9.10000 0 + 1 0.00000 0.00000 4 0.00000 0 3.23333 0 6.46667 0 9.70000 0 + 1 0.00000 0.00000 4 0.00000 0 3.13333 0 6.26667 0 9.40000 0 + 1 0.00000 0.00000 4 0.00000 0 3.93333 0 7.86667 0 11.80000 0 + 1 0.00000 0.00000 4 0.00000 0 3.73333 0 7.46667 0 11.20000 0 + 1 0.00000 0.00000 4 0.00000 0 3.43333 0 6.86667 0 10.30000 0 + 1 0.00000 0.00000 4 0.00000 0 1.50000 0 3.00000 0 4.50000 0 + 1 0.00000 0.00000 4 0.00000 0 4.40000 0 8.80000 0 13.20000 0 + 1 0.00000 0.00000 4 0.00000 0 49.43333 0 98.86667 0 148.30000 0 + 1 0.00000 0.00000 4 0.00000 0 266.36667 0 532.73333 0 799.10000 0 + 1 0.00000 0.00000 4 0.00000 0 282.33333 0 564.66667 0 847.00000 0 + 1 0.00000 0.00000 4 0.00000 0 237.83333 0 475.66667 0 713.50000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + ]; + + + % bus names + %column_names% name + mpc.bus_name = { + 'ABEL'; + 'ADAMS'; + 'ADLER'; + 'AGRICOLA'; + 'AIKEN'; + 'ALBER'; + 'ALDER'; + 'ALGER'; + 'ALI'; + 'ALLEN'; + 'ANNA'; + 'ARCHER'; + 'ARNE'; + 'ARNOLD'; + 'ARTHUR'; + 'ASSER'; + 'ASTON'; + 'ASTOR'; + 'ATTAR'; + 'ATTILA'; + 'ATTLEE'; + 'AUBREY'; + 'AUSTEN'; + 'AVERY'; + 'BACH'; + 'BACON'; + 'BAFFIN'; + 'BAILEY'; + 'BAIN'; + 'BAJER'; + 'BAKER'; + 'BALCH'; + 'BALZAC'; + 'BANKS'; + 'BARDEEN'; + 'BARKLA'; + 'BARLOW'; + 'BARRY'; + 'BARTON'; + 'BASOV'; + 'BATES'; + 'BAYLE'; + 'BEDE'; + 'BEETHOVEN'; + 'BEHRING'; + 'BELL'; + 'BLOCH'; + 'BORDET'; + 'CABELL'; + 'CABOT'; + 'CAESAR'; + 'CAINE'; + 'CALVIN'; + 'CAMUS'; + 'CAREW'; + 'CARREL'; + 'CARTER'; + 'CARUSO'; + 'CARY'; + 'CAXTON'; + 'CECIL'; + 'CHAIN'; + 'CHASE'; + 'CHIFA'; + 'CHUHSI'; + 'CLARK'; + 'CLAY'; + 'CLIVE'; + 'COBB'; + 'COLE'; + 'COMTE'; + 'CURIE'; + 'CURTISS'; + }; + + + % generator names types and fuels + %column_names% name type fuel + mpc.gen_name = { + '101_CT_1' 'CT' 'Oil'; + '101_CT_2' 'CT' 'Oil'; + '101_STEAM_3' 'STEAM' 'Coal'; + '101_STEAM_4' 'STEAM' 'Coal'; + '102_CT_1' 'CT' 'Oil'; + '102_CT_2' 'CT' 'Oil'; + '102_STEAM_3' 'STEAM' 'Coal'; + '102_STEAM_4' 'STEAM' 'Coal'; + '107_CC_1' 'CC' 'NG'; + '113_CT_1' 'CT' 'NG'; + '113_CT_2' 'CT' 'NG'; + '113_CT_3' 'CT' 'NG'; + '113_CT_4' 'CT' 'NG'; + '115_STEAM_1' 'STEAM' 'Oil'; + '115_STEAM_2' 'STEAM' 'Oil'; + '115_STEAM_3' 'STEAM' 'Coal'; + '116_STEAM_1' 'STEAM' 'Coal'; + '118_CC_1' 'CC' 'NG'; + '123_STEAM_2' 'STEAM' 'Coal'; + '123_STEAM_3' 'STEAM' 'Coal'; + '123_CT_1' 'CT' 'NG'; + '123_CT_4' 'CT' 'NG'; + '123_CT_5' 'CT' 'NG'; + '201_CT_1' 'CT' 'Oil'; + '201_CT_2' 'CT' 'Oil'; + '201_STEAM_3' 'STEAM' 'Coal'; + '202_CT_1' 'CT' 'Oil'; + '202_CT_2' 'CT' 'Oil'; + '202_STEAM_3' 'STEAM' 'Coal'; + '202_STEAM_4' 'STEAM' 'Coal'; + '207_CT_1' 'CT' 'NG'; + '207_CT_2' 'CT' 'NG'; + '213_CC_3' 'CC' 'NG'; + '213_CT_1' 'CT' 'NG'; + '213_CT_2' 'CT' 'NG'; + '215_CT_4' 'CT' 'NG'; + '215_CT_5' 'CT' 'NG'; + '216_STEAM_1' 'STEAM' 'Coal'; + '218_CC_1' 'CC' 'NG'; + '221_CC_1' 'CC' 'NG'; + '223_STEAM_1' 'STEAM' 'Coal'; + '223_STEAM_2' 'STEAM' 'Coal'; + '223_STEAM_3' 'STEAM' 'Coal'; + '223_CT_4' 'CT' 'NG'; + '223_CT_5' 'CT' 'NG'; + '223_CT_6' 'CT' 'NG'; + '301_CT_1' 'CT' 'Oil'; + '301_CT_2' 'CT' 'Oil'; + '301_CT_3' 'CT' 'NG'; + '301_CT_4' 'CT' 'NG'; + '302_CT_1' 'CT' 'Oil'; + '302_CT_2' 'CT' 'Oil'; + '302_CT_3' 'CT' 'NG'; + '302_CT_4' 'CT' 'NG'; + '307_CT_1' 'CT' 'NG'; + '307_CT_2' 'CT' 'NG'; + '313_CC_1' 'CC' 'NG'; + '315_STEAM_1' 'STEAM' 'Oil'; + '315_STEAM_2' 'STEAM' 'Oil'; + '315_STEAM_3' 'STEAM' 'Oil'; + '315_STEAM_4' 'STEAM' 'Oil'; + '315_STEAM_5' 'STEAM' 'Oil'; + '315_CT_6' 'CT' 'NG'; + '315_CT_7' 'CT' 'NG'; + '315_CT_8' 'CT' 'NG'; + '316_STEAM_1' 'STEAM' 'Coal'; + '318_CC_1' 'CC' 'NG'; + '321_CC_1' 'CC' 'NG'; + '322_CT_5' 'CT' 'NG'; + '322_CT_6' 'CT' 'NG'; + '323_CC_1' 'CC' 'NG'; + '323_CC_2' 'CC' 'NG'; + '114_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '121_NUCLEAR_1' 'NUCLEAR' 'Nuclear'; + '122_HYDRO_1' 'HYDRO' 'Hydro'; + '122_HYDRO_2' 'HYDRO' 'Hydro'; + '122_HYDRO_3' 'HYDRO' 'Hydro'; + '122_HYDRO_4' 'HYDRO' 'Hydro'; + '122_HYDRO_5' 'HYDRO' 'Hydro'; + '122_HYDRO_6' 'HYDRO' 'Hydro'; + '201_HYDRO_4' 'HYDRO' 'Hydro'; + '214_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '215_HYDRO_1' 'HYDRO' 'Hydro'; + '215_HYDRO_2' 'HYDRO' 'Hydro'; + '215_HYDRO_3' 'HYDRO' 'Hydro'; + '222_HYDRO_1' 'HYDRO' 'Hydro'; + '222_HYDRO_2' 'HYDRO' 'Hydro'; + '222_HYDRO_3' 'HYDRO' 'Hydro'; + '222_HYDRO_4' 'HYDRO' 'Hydro'; + '222_HYDRO_5' 'HYDRO' 'Hydro'; + '222_HYDRO_6' 'HYDRO' 'Hydro'; + '314_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '322_HYDRO_1' 'HYDRO' 'Hydro'; + '322_HYDRO_2' 'HYDRO' 'Hydro'; + '322_HYDRO_3' 'HYDRO' 'Hydro'; + '322_HYDRO_4' 'HYDRO' 'Hydro'; + '320_PV_1' 'PV' 'Solar'; + '314_PV_1' 'PV' 'Solar'; + '314_PV_2' 'PV' 'Solar'; + '313_PV_1' 'PV' 'Solar'; + '314_PV_3' 'PV' 'Solar'; + '314_PV_4' 'PV' 'Solar'; + '313_PV_2' 'PV' 'Solar'; + '310_PV_1' 'PV' 'Solar'; + '324_PV_1' 'PV' 'Solar'; + '312_PV_1' 'PV' 'Solar'; + '310_PV_2' 'PV' 'Solar'; + '324_PV_2' 'PV' 'Solar'; + '324_PV_3' 'PV' 'Solar'; + '113_PV_1' 'PV' 'Solar'; + '319_PV_1' 'PV' 'Solar'; + '215_PV_1' 'PV' 'Solar'; + '102_PV_1' 'PV' 'Solar'; + '101_PV_1' 'PV' 'Solar'; + '102_PV_2' 'PV' 'Solar'; + '104_PV_1' 'PV' 'Solar'; + '212_CSP_1' 'CSP' 'Solar'; + '101_PV_2' 'PV' 'Solar'; + '101_PV_3' 'PV' 'Solar'; + '101_PV_4' 'PV' 'Solar'; + '103_PV_1' 'PV' 'Solar'; + '119_PV_1' 'PV' 'Solar'; + '308_RTPV_1' 'RTPV' 'Solar'; + '313_RTPV_1' 'RTPV' 'Solar'; + '313_RTPV_2' 'RTPV' 'Solar'; + '313_RTPV_3' 'RTPV' 'Solar'; + '313_RTPV_4' 'RTPV' 'Solar'; + '313_RTPV_5' 'RTPV' 'Solar'; + '313_RTPV_6' 'RTPV' 'Solar'; + '313_RTPV_7' 'RTPV' 'Solar'; + '313_RTPV_8' 'RTPV' 'Solar'; + '313_RTPV_9' 'RTPV' 'Solar'; + '313_RTPV_10' 'RTPV' 'Solar'; + '313_RTPV_11' 'RTPV' 'Solar'; + '313_RTPV_12' 'RTPV' 'Solar'; + '320_RTPV_1' 'RTPV' 'Solar'; + '320_RTPV_2' 'RTPV' 'Solar'; + '320_RTPV_3' 'RTPV' 'Solar'; + '313_RTPV_13' 'RTPV' 'Solar'; + '320_RTPV_4' 'RTPV' 'Solar'; + '320_RTPV_5' 'RTPV' 'Solar'; + '118_RTPV_1' 'RTPV' 'Solar'; + '118_RTPV_2' 'RTPV' 'Solar'; + '118_RTPV_3' 'RTPV' 'Solar'; + '118_RTPV_4' 'RTPV' 'Solar'; + '118_RTPV_5' 'RTPV' 'Solar'; + '118_RTPV_6' 'RTPV' 'Solar'; + '320_RTPV_6' 'RTPV' 'Solar'; + '118_RTPV_7' 'RTPV' 'Solar'; + '118_RTPV_8' 'RTPV' 'Solar'; + '118_RTPV_9' 'RTPV' 'Solar'; + '118_RTPV_10' 'RTPV' 'Solar'; + '213_RTPV_1' 'RTPV' 'Solar'; + '309_WIND_1' 'WIND' 'Wind'; + '317_WIND_1' 'WIND' 'Wind'; + '303_WIND_1' 'WIND' 'Wind'; + '122_WIND_1' 'WIND' 'Wind'; + '313_STORAGE_1' 'STORAGE' 'Storage'; + }; + + %%----- DC Line Data -----%% + % F_BUS T_BUS BR_STATUS PF PT QF QT VF VT PMIN PMAX QMINF QMAXF QMINT QMAXT LOSS0 LOSS1 MU_PMIN MU_PMAX MU_QMINF MU_QMAXF MU_QMINT MU_QMAXT + mpc.dcline = [ + 113 316 1 0 0 0 0 1 1 -100 100 -9999 9999 -9999 9999 0 0 0 0 0 0 0 0 + ]; \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/TestGENCLS.dyr b/previews/PR1200/tutorials/tutorials_data/TestGENCLS.dyr new file mode 100644 index 0000000000..0787cf64c9 --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/TestGENCLS.dyr @@ -0,0 +1,5 @@ + 101 'GENROE' 1 8.000000 0.030000 0.400000 0.050000 6.500000 0.000000 1.800000 + 1.700000 0.300000 0.550000 0.250000 0.200000 0.039200 0.267200 / + 101 'ESST1A' 1 1 1 0.01 99 -99 1 10 1 1 200 0 4 -4 4 -4 0 0 1 0 3 / + 102 'GENCLS' 1 0.0 0.0 / + 103 'GENCLS' 1 3.1 2.0 / \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/ThreeBusInverter.raw b/previews/PR1200/tutorials/tutorials_data/ThreeBusInverter.raw new file mode 100644 index 0000000000..bf19bf1b8b --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/ThreeBusInverter.raw @@ -0,0 +1,34 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9 + 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9 + 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0 + 102, 1, 1, 1, 1, 100, 30, 0, 0, 0, 0, 1, 1, 0 + 103, 1, 1, 1, 1, 30, 10, 0, 0, 0, 0, 1, 1, 0 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 102, 1, 70, 0, 100, -100, 1.0142, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 103, 1, 80, 0, 100, -100, 1.0059, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 103, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 101, 102, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 102, 103, 1, 0.02000, 0.9, 1.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA +0 / END OF TRANSFORMER DATA, BEGIN AREA DATA +0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA +0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/ThreeBusNetwork.raw b/previews/PR1200/tutorials/tutorials_data/ThreeBusNetwork.raw new file mode 100644 index 0000000000..66101147cd --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/ThreeBusNetwork.raw @@ -0,0 +1,35 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9 + 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9 + 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101, 1, 1, 1, 1, 100, 20, 0, 0, 0, 0, 1, 1, 0 + 102, 1, 1, 1, 1, 70, 10, 0, 0, 0, 0, 1, 1, 0 + 103, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 101, 1, 20, 0, 100, -100, 1.02, 0, 100, 0, 0, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 102, 1, 100, 0, 100, -100, 1.0142, 0, 100, 0, 0.7, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 103, 1, 100, 0, 100, -100, 1.0059, 0, 100, 0, 0.2, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 101, 102, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 102, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA +0 / END OF TRANSFORMER DATA, BEGIN AREA DATA +0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA +0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/case5.m b/previews/PR1200/tutorials/tutorials_data/case5.m new file mode 100644 index 0000000000..5a61622a50 --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/case5.m @@ -0,0 +1,59 @@ +% NESTA v0.6.0 +% used in tests of, +% - non-contiguous bus ids +% - tranformer orentation swapping +% - dual values +% + +function mpc = nesta_case5_pjm + mpc.version = '2'; + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 4; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 1 2 0.0 0.0 0.0 0.0 1 1.00000 2.80377 230.0 1 1.10000 0.90000; + 2 1 300.0 98.61 0.0 0.0 1 1.08407 -0.73465 230.0 1 1.10000 0.90000; + 3 2 300.0 98.61 0.0 0.0 1 1.00000 -0.55972 230.0 1 1.10000 0.90000; + 4 3 400.0 131.47 0.0 0.0 1 1.00000 0.00000 230.0 1 1.10000 0.90000; + 10 2 0.0 0.0 0.0 0.0 1 1.00000 3.59033 230.0 1 1.10000 0.90000; + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 1 40.0 30.0 30.0 -30.0 1.07762 100.0 1 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 1 170.0 127.5 127.5 -127.5 1.07762 100.0 1 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 324.498 390.0 390.0 -390.0 1.1 100.0 1 520.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 4 0.0 -10.802 150.0 -150.0 1.06414 100.0 1 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 470.694 -165.039 450.0 -450.0 1.06907 100.0 1 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + ]; + + %% generator cost data + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 2 0.0 0.0 3 0.000000 14.000000 0.000000; + 2 0.0 0.0 3 0.000000 15.000000 0.000000; + 2 0.0 0.0 3 0.000000 30.000000 0.000000; + 2 0.0 0.0 3 0.000000 40.000000 0.000000; + 2 0.0 0.0 3 0.000000 10.000000 0.000000; + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 1 2 0.00281 0.0281 0.00712 400.0 400.0 400.0 0.0 0.0 1 -30.0 30.0; + 1 4 0.00304 0.0304 0.00658 426 426 426 0.0 0.0 1 -30.0 30.0; + 1 10 0.00064 0.0064 0.03126 426 426 426 0.0 0.0 1 -30.0 30.0; + 2 3 0.00108 0.0108 0.01852 426 426 426 0.0 0.0 1 -30.0 30.0; + 3 4 0.00297 0.0297 0.00674 426 426 426 1.05 1.0 1 -30.0 30.0; + 4 3 0.00297 0.0297 0.00674 426 426 426 1.05 -1.0 1 -30.0 30.0; + 4 10 0.00297 0.0297 0.00674 240.0 240.0 240.0 0.0 0.0 1 -30.0 30.0; + ]; + \ No newline at end of file diff --git a/previews/PR1200/tutorials/tutorials_data/case5_re.m b/previews/PR1200/tutorials/tutorials_data/case5_re.m new file mode 100644 index 0000000000..6358bcd614 --- /dev/null +++ b/previews/PR1200/tutorials/tutorials_data/case5_re.m @@ -0,0 +1,85 @@ +% NESTA v0.6.0 +% extended to include renewable generators +% used in tests of, +% - non-contiguous bus ids +% - tranformer orentation swapping +% - dual values +% + +function mpc = nesta_case5_pjm + mpc.version = '2'; + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 4; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 1 2 0.0 0.0 0.0 0.0 1 1.00000 2.80377 230.0 1 1.10000 0.90000; + 2 1 300.0 98.61 0.0 0.0 1 1.08407 -0.73465 230.0 1 1.10000 0.90000; + 3 2 300.0 98.61 0.0 0.0 1 1.00000 -0.55972 230.0 1 1.10000 0.90000; + 4 3 400.0 131.47 0.0 0.0 1 1.00000 0.00000 230.0 1 1.10000 0.90000; + 10 2 0.0 0.0 0.0 0.0 1 1.00000 3.59033 230.0 1 1.10000 0.90000; + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 1 40.0 30.0 30.0 -30.0 1.07762 100.0 1 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 1 170.0 127.5 127.5 -127.5 1.07762 100.0 1 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 324.498 390.0 390.0 -390.0 1.1 100.0 1 520.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 4 0.0 -10.802 150.0 -150.0 1.06414 100.0 1 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 470.694 -165.039 450.0 -450.0 1.06907 100.0 1 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 0 0 0 0 1.1 100.0 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 0 0 0 0 1.06907 100.0 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + ]; + + %% generator cost data + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 2 0.0 0.0 3 0.000000 14.000000 0.000000; + 2 0.0 0.0 3 0.000000 15.000000 0.000000; + 2 0.0 0.0 3 0.000000 30.000000 0.000000; + 2 0.0 0.0 3 0.000000 40.000000 0.000000; + 2 0.0 0.0 3 0.000000 10.000000 0.000000; + 2 0.0 0.0 3 0.000000 0.000000 0.000000; + 2 0.0 0.0 3 0.000000 0.000000 0.000000; + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 1 2 0.00281 0.0281 0.00712 200.0 200.0 200.0 0.0 0.0 1 -30.0 30.0; + 1 4 0.00304 0.0304 0.00658 200 200 200 0.0 0.0 1 -30.0 30.0; + 1 10 0.00064 0.0064 0.03126 1000 1000 1000 0.0 0.0 1 -30.0 30.0; + 2 3 0.00108 0.0108 0.01852 1200 1200 1200 0.0 0.0 1 -30.0 30.0; + 3 4 0.00297 0.0297 0.00674 1000 1000 1000 1.05 1.0 1 -30.0 30.0; + 4 3 0.00297 0.0297 0.00674 426 426 426 1.05 -1.0 1 -30.0 30.0; + 4 10 0.00297 0.0297 0.00674 200.0 200.0 200.0 0.0 0.0 1 -30.0 30.0; + ]; + + % generator names types and fuels + %column_names% name type fuel + mpc.gen_name = { + 'Alta' 'CT' 'Gas'; + 'Park City' 'CC' 'Gas'; + 'Solitude' 'ST' 'Nuc'; + 'Sundance' 'CC' 'Gas'; + 'Brighton' 'ST' 'Coal'; + 'SolarBusC' 'PV' 'Solar'; + 'WindBusA' 'WIND' 'Wind'; + }; + + % bus names + %column_names% name + mpc.bus_name = { + 'bus1'; + 'bus2'; + 'bus3'; + 'bus4'; + 'bus5'; + }; \ No newline at end of file diff --git a/previews/PR1200/tutorials/utils/docs_utils.jl b/previews/PR1200/tutorials/utils/docs_utils.jl new file mode 100644 index 0000000000..5950f5c495 --- /dev/null +++ b/previews/PR1200/tutorials/utils/docs_utils.jl @@ -0,0 +1,13 @@ +""" +`print_struct()` + +Prints the definition of a struct. +""" +function print_struct(type) + mutable = ismutable(type) ? "mutable" : "" + println("$mutable struct $type") + for (fn, ft) in zip(fieldnames(type), fieldtypes(type)) + println(" $fn::$ft") + end + println("end") +end diff --git a/previews/PR1200/tutorials/working_with_time_series/index.html b/previews/PR1200/tutorials/working_with_time_series/index.html new file mode 100644 index 0000000000..ad44e5a765 --- /dev/null +++ b/previews/PR1200/tutorials/working_with_time_series/index.html @@ -0,0 +1,339 @@ + +Working with Time Series · PowerSystems.jl

Working with Time Series Data

In this tutorial, we will manually add, retrieve, and inspect time-series data in different formats, including identifying which components in a power System have time series data. Along the way, we will also use workarounds for missing forecast data and reuse identical time series profiles to avoid unnecessary memory usage.

Example Data and Setup

We will make an example System with a wind generator and two loads, and add the time series needed to model, for example, the impacts of wind forecast uncertainty.

Here is the available data:

For the wind generator, we have the historical point (deterministic) forecasts of power output. The forecasts were generated every 30 minutes with a 5-minute resolution and 1-hour horizon. We also have measurements what actually happened at 5-minute resolution over the 2 hours.

For the loads, note that the forecast data is missing. We only have the historical measurements of total load for the system, which is normalized to the system's peak load.

Load the PowerSystems, Dates, and TimeSeries packages to get started:

julia> using PowerSystems
julia> using Dates
julia> using TimeSeries

As usual, we need to define a power System that holds all our data. Let's define a simple system with a bus, a wind generator, and two loads:

julia> system = System(100.0); # 100 MVA base power
julia> bus1 = ACBus(; + number = 1, + name = "bus1", + bustype = ACBusTypes.REF, + angle = 0.0, + magnitude = 1.0, + voltage_limits = (min = 0.9, max = 1.05), + base_voltage = 230.0, + );
julia> wind1 = RenewableDispatch(; + name = "wind1", + available = true, + bus = bus1, + active_power = 0.0, # Per-unitized by device base_power + reactive_power = 0.0, # Per-unitized by device base_power + rating = 1.0, # 10 MW per-unitized by device base_power + prime_mover_type = PrimeMovers.WT, + reactive_power_limits = (min = 0.0, max = 0.0), # per-unitized by device base_power + power_factor = 1.0, + operation_cost = RenewableGenerationCost(nothing), + base_power = 10.0, # MVA + );
julia> load1 = PowerLoad(; + name = "load1", + available = true, + bus = bus1, + active_power = 0.0, # Per-unitized by device base_power + reactive_power = 0.0, # Per-unitized by device base_power + base_power = 10.0, # MVA + max_active_power = 1.0, # 10 MW per-unitized by device base_power + max_reactive_power = 0.0, + );
julia> load2 = PowerLoad(; + name = "load2", + available = true, + bus = bus1, + active_power = 0.0, # Per-unitized by device base_power + reactive_power = 0.0, # Per-unitized by device base_power + base_power = 30.0, # MVA + max_active_power = 1.0, # 10 MW per-unitized by device base_power + max_reactive_power = 0.0, + );
julia> add_components!(system, [bus1, wind1, load1, load2])

Recall that we can also set the System's unit base to natural units (MW) to make it easier to inspect results:

julia> set_units_base_system!(system, "NATURAL_UNITS")[ Info: Unit System changed to UnitSystem.NATURAL_UNITS = 2

Before we get started, print wind1 to see its data:

julia> wind1RenewableDispatch: wind1:
+   name: wind1
+   available: true
+   bus: ACBus: bus1
+   active_power: 0.0
+   reactive_power: 0.0
+   rating: 10.0
+   prime_mover_type: PrimeMovers.WT = 22
+   reactive_power_limits: (min = 0.0, max = 0.0)
+   power_factor: 1.0
+   operation_cost: RenewableGenerationCost composed of variable: CostCurve{LinearCurve}, curtailment_cost: CostCurve{LinearCurve}
+   base_power: 10.0
+   services: 0-element Vector{Service}
+   dynamic_injector: nothing
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.NATURAL_UNITS = 2
+   has_supplemental_attributes: false
+   has_time_series: false

See the has_time_series field at the bottom is false.

Recall that we also can see a summary of the system by printing it:

julia> systemSystem
+┌───────────────────┬───────────────┐
+│ Property          │ Value         │
+├───────────────────┼───────────────┤
+│ Name              │               │
+│ Description       │               │
+│ System Units Base │ NATURAL_UNITS │
+│ Base Power        │ 100.0         │
+│ Base Frequency    │ 60.0          │
+│ Num Components    │ 4             │
+└───────────────────┴───────────────┘
+
+Static Components
+┌───────────────────┬───────┐
+│ Type              │ Count │
+├───────────────────┼───────┤
+│ ACBus             │ 1     │
+│ PowerLoad         │ 2     │
+│ RenewableDispatch │ 1     │
+└───────────────────┴───────┘

Observe that there is no mention of time series data in the system yet.

Add and Retrieve a Single Time Series

Let's start by defining and attaching the wind measurements shown in the data above. This is a single time series profile, so we will use a SingleTimeSeries.

First, define a TimeSeries.TimeArray of input data, using the 5-minute resolution to define the time-stamps in the example data:

julia> wind_values = [6.0, 7, 7, 6, 7, 9, 9, 9, 8, 8, 7, 6, 5, 5, 5, 5, 5, 6, 6, 6, 7, 6, 7, 7];
julia> resolution = Dates.Minute(5);
julia> timestamps = range(DateTime("2020-01-01T08:00:00"); step = resolution, length = 24);
julia> wind_timearray = TimeArray(timestamps, wind_values);

Now, use the input data to define a Single Time Series in PowerSystems:

julia> wind_time_series = SingleTimeSeries(;
+           name = "max_active_power",
+           data = wind_timearray,
+       );

Note that we've chosen the name max_active_power, which is the default time series profile name when using PowerSimulations.jl for simulations.

So far, this time series has been defined, but not attached to our System in any way. Now, attach it to wind1 using add_time_series!:

julia> add_time_series!(system, wind1, wind_time_series);

Let's double-check this worked by calling show_time_series:

julia> show_time_series(wind1)┌──────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │          resolution │ length │            features │
+│           String │           String │      Dates.DateTime │   Dates.Millisecond │  Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────┼─────────────────────┤
+│ SingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     24 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────┴─────────────────────┘

Now wind1 has the first time-series data set. Recall that you can also print wind1 and check the has_time_series field like we did above.

Finally, let's retrieve and inspect the new timeseries, using get_time_series_array:

julia> get_time_series_array(SingleTimeSeries, wind1, "max_active_power")24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T08:00:00 to 2020-01-01T09:55:00
+┌─────────────────────┬─────┐
+│                     │ A   │
+├─────────────────────┼─────┤
+│ 2020-01-01T08:00:00 │ 6.0 │
+│ 2020-01-01T08:05:00 │ 7.0 │
+│ 2020-01-01T08:10:00 │ 7.0 │
+│ 2020-01-01T08:15:00 │ 6.0 │
+│ 2020-01-01T08:20:00 │ 7.0 │
+│ 2020-01-01T08:25:00 │ 9.0 │
+│ 2020-01-01T08:30:00 │ 9.0 │
+│ 2020-01-01T08:35:00 │ 9.0 │
+│          ⋮          │  ⋮  │
+│ 2020-01-01T09:25:00 │ 6.0 │
+│ 2020-01-01T09:30:00 │ 6.0 │
+│ 2020-01-01T09:35:00 │ 6.0 │
+│ 2020-01-01T09:40:00 │ 7.0 │
+│ 2020-01-01T09:45:00 │ 6.0 │
+│ 2020-01-01T09:50:00 │ 7.0 │
+│ 2020-01-01T09:55:00 │ 7.0 │
+└─────────────────────┴─────┘
+               9 rows omitted

Verify this matches your expectation based on the input data.

Add and Retrieve a Forecast

Next, let's add the wind power forecasts. We will use a Deterministic format for the point forecasts.

Because we have forecasts with at different initial times, the input data must be a dictionary where the keys are the initial times and the values are vectors or TimeSeries.TimeArrays of the forecast data. Set up the example input data:

julia> wind_forecast_data = Dict(
+           DateTime("2020-01-01T08:00:00") => [5.0, 6, 7, 7, 7, 8, 9, 10, 10, 9, 7, 5],
+           DateTime("2020-01-01T08:30:00") => [9.0, 9, 9, 9, 8, 7, 6, 5, 4, 5, 4, 4],
+           DateTime("2020-01-01T09:00:00") => [6.0, 6, 5, 5, 4, 5, 6, 7, 7, 7, 6, 6],
+       );

Define the Deterministic forecast and attach it to wind1:

julia> wind_forecast = Deterministic("max_active_power", wind_forecast_data, resolution);
julia> add_time_series!(system, wind1, wind_forecast);

Let's call show_time_series once again:

julia> show_time_series(wind1)┌──────────────────┬──────────────────┬─────────────────────┬──────────────┬──────────────┬──────────────────────┬───────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │   resolution │      horizon │             interval │ count │            features │
+│           String │           String │      Dates.DateTime │ Dates.Minute │ Dates.Minute │    Dates.Millisecond │ Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼──────────────┼──────────────┼──────────────────────┼───────┼─────────────────────┤
+│    Deterministic │ max_active_power │ 2020-01-01T08:00:00 │    5 minutes │   60 minutes │ 1800000 milliseconds │     3 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴──────────────┴──────────────┴──────────────────────┴───────┴─────────────────────┘
+┌──────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │          resolution │ length │            features │
+│           String │           String │      Dates.DateTime │   Dates.Millisecond │  Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────┼─────────────────────┤
+│ SingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     24 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────┴─────────────────────┘

Notice that we now have two types of time series listed – the single time series and the forecasts.

Finally, let's retrieve the forecast data to double check it was added properly, specifying the initial time to get the 2nd forecast window starting at 8:30:

julia> get_time_series_array(
+           Deterministic,
+           wind1,
+           "max_active_power";
+           start_time = DateTime("2020-01-01T08:30:00"),
+       )12×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}} 2020-01-01T08:30:00 to 2020-01-01T09:25:00
+┌─────────────────────┬─────┐
+│                     │ A   │
+├─────────────────────┼─────┤
+│ 2020-01-01T08:30:00 │ 9.0 │
+│ 2020-01-01T08:35:00 │ 9.0 │
+│ 2020-01-01T08:40:00 │ 9.0 │
+│ 2020-01-01T08:45:00 │ 9.0 │
+│ 2020-01-01T08:50:00 │ 8.0 │
+│ 2020-01-01T08:55:00 │ 7.0 │
+│ 2020-01-01T09:00:00 │ 6.0 │
+│ 2020-01-01T09:05:00 │ 5.0 │
+│ 2020-01-01T09:10:00 │ 4.0 │
+│ 2020-01-01T09:15:00 │ 5.0 │
+│ 2020-01-01T09:20:00 │ 4.0 │
+│ 2020-01-01T09:25:00 │ 4.0 │
+└─────────────────────┴─────┘

Add A Time Series Using Scaling Factors

Let's add the load time series. Recall that this data is normalized to the peak system power, so we'll use it to scale both of our loads. We call normalized time series data scaling factors.

First, let's create our input data TimeSeries.TimeArray with the example data and the same time stamps we used in the wind time series:

julia> load_values = [0.3, 0.3, 0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.6, 0.6,
+           0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.8, 0.8, 0.8, 0.8, 0.8];
julia> load_timearray = TimeArray(timestamps, load_values);

Again, define a SingleTimeSeries, but this time use the scaling_factor_multiplierparameter to scale this time series from normalized values to power values:

julia> load_time_series = SingleTimeSeries(;
+           name = "max_active_power",
+           data = load_timearray,
+           scaling_factor_multiplier = get_max_active_power,
+       );

Notice that we assigned the get_max_active_power function to scale the time series, rather than a value, making the time series reusable for multiple components or multiple fields in a component.

Now, add the scaling factor time series to both loads to save memory and avoid data duplication:

julia> add_time_series!(system, [load1, load2], load_time_series);

Let's take a look at load1, including printing its parameters...

julia> load1PowerLoad: load1:
+   name: load1
+   available: true
+   bus: ACBus: bus1
+   active_power: 0.0
+   reactive_power: 0.0
+   base_power: 10.0
+   max_active_power: 10.0
+   max_reactive_power: 0.0
+   services: 0-element Vector{Service}
+   dynamic_injector: nothing
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.NATURAL_UNITS = 2
+   has_supplemental_attributes: false
+   has_time_series: true

...as well as its time series:

julia> show_time_series(load1)┌──────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │          resolution │ length │            features │
+│           String │           String │      Dates.DateTime │   Dates.Millisecond │  Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────┼─────────────────────┤
+│ SingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     24 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────┴─────────────────────┘
Important

Notice that each load now has two references to max_active_power. This is intentional. There is the parameter, max_active_power, which is the maximum demand of each load at any time (10 MW). There is also max_active_power the time series, which is the time varying demand over the 2-hour window, calculated using the scaling factors and the max_active_power parameter.

This means that if we change the max_active_power parameter, the time series will also change when we retrieve it! This is also true when we apply the same scaling factors to multiple components or parameters.

Let's check the impact that these two max_active_power data sources have on the times series data when we retrieve it. Get the max_active_power time series for load1:

julia> get_time_series_array(SingleTimeSeries, load1, "max_active_power") # in MW24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T08:00:00 to 2020-01-01T09:55:00
+┌─────────────────────┬─────┐
+│                     │ A   │
+├─────────────────────┼─────┤
+│ 2020-01-01T08:00:00 │ 3.0 │
+│ 2020-01-01T08:05:00 │ 3.0 │
+│ 2020-01-01T08:10:00 │ 3.0 │
+│ 2020-01-01T08:15:00 │ 3.0 │
+│ 2020-01-01T08:20:00 │ 4.0 │
+│ 2020-01-01T08:25:00 │ 4.0 │
+│ 2020-01-01T08:30:00 │ 4.0 │
+│ 2020-01-01T08:35:00 │ 4.0 │
+│          ⋮          │  ⋮  │
+│ 2020-01-01T09:25:00 │ 8.0 │
+│ 2020-01-01T09:30:00 │ 9.0 │
+│ 2020-01-01T09:35:00 │ 8.0 │
+│ 2020-01-01T09:40:00 │ 8.0 │
+│ 2020-01-01T09:45:00 │ 8.0 │
+│ 2020-01-01T09:50:00 │ 8.0 │
+│ 2020-01-01T09:55:00 │ 8.0 │
+└─────────────────────┴─────┘
+               9 rows omitted

See that the normalized values have been scaled up by 10 MW.

Now let's at load2. First check its max_active_power parameter:

julia> get_max_active_power(load2)30.0

This has a higher peak maximum demand of 30 MW.

Next, retrieve it's max_active_power time series:

julia> get_time_series_array(SingleTimeSeries, load2, "max_active_power") # in MW24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T08:00:00 to 2020-01-01T09:55:00
+┌─────────────────────┬──────┐
+│                     │ A    │
+├─────────────────────┼──────┤
+│ 2020-01-01T08:00:00 │  9.0 │
+│ 2020-01-01T08:05:00 │  9.0 │
+│ 2020-01-01T08:10:00 │  9.0 │
+│ 2020-01-01T08:15:00 │  9.0 │
+│ 2020-01-01T08:20:00 │ 12.0 │
+│ 2020-01-01T08:25:00 │ 12.0 │
+│ 2020-01-01T08:30:00 │ 12.0 │
+│ 2020-01-01T08:35:00 │ 12.0 │
+│          ⋮          │  ⋮   │
+│ 2020-01-01T09:25:00 │ 24.0 │
+│ 2020-01-01T09:30:00 │ 27.0 │
+│ 2020-01-01T09:35:00 │ 24.0 │
+│ 2020-01-01T09:40:00 │ 24.0 │
+│ 2020-01-01T09:45:00 │ 24.0 │
+│ 2020-01-01T09:50:00 │ 24.0 │
+│ 2020-01-01T09:55:00 │ 24.0 │
+└─────────────────────┴──────┘
+                9 rows omitted

Observe the difference compared to load1's time series.

Finally, retrieve the underlying time series data with no scaling factor multiplier applied:

julia> get_time_series_array(SingleTimeSeries,
+           load2,
+           "max_active_power";
+           ignore_scaling_factors = true,
+       )24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T08:00:00 to 2020-01-01T09:55:00
+┌─────────────────────┬─────┐
+│                     │ A   │
+├─────────────────────┼─────┤
+│ 2020-01-01T08:00:00 │ 0.3 │
+│ 2020-01-01T08:05:00 │ 0.3 │
+│ 2020-01-01T08:10:00 │ 0.3 │
+│ 2020-01-01T08:15:00 │ 0.3 │
+│ 2020-01-01T08:20:00 │ 0.4 │
+│ 2020-01-01T08:25:00 │ 0.4 │
+│ 2020-01-01T08:30:00 │ 0.4 │
+│ 2020-01-01T08:35:00 │ 0.4 │
+│          ⋮          │  ⋮  │
+│ 2020-01-01T09:25:00 │ 0.8 │
+│ 2020-01-01T09:30:00 │ 0.9 │
+│ 2020-01-01T09:35:00 │ 0.8 │
+│ 2020-01-01T09:40:00 │ 0.8 │
+│ 2020-01-01T09:45:00 │ 0.8 │
+│ 2020-01-01T09:50:00 │ 0.8 │
+│ 2020-01-01T09:55:00 │ 0.8 │
+└─────────────────────┴─────┘
+               9 rows omitted

Notice that this is the normalized input data, which is still being stored underneath. Each load is using a reference to that data when we call get_time_series_array to avoid unnecessary data duplication.

Transform a SingleTimeSeries into a Forecast

Finally, let's use a workaround to handle the missing load forecast data. We will assume a perfect forecast where the forecast is based on the SingleTimeSeries we just added.

Rather than unnecessarily duplicating and reformatting data, use PowerSystems.jl's dedicated transform_single_time_series! function to generate a DeterministicSingleTimeSeries, which saves memory while behaving just like a Deterministic forecast:

julia> transform_single_time_series!(
+           system,
+           Dates.Hour(1), # horizon
+           Dates.Minute(30), # interval
+       );

Let's see the results for load1's time series summary:

julia> show_time_series(load1)┌───────────────────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────────┬──────────────┬───────┬─────────────────────┐
+│              time_series_type │             name │   initial_timestamp │          resolution │    horizon │     interval │ count │            features │
+│                        String │           String │      Dates.DateTime │   Dates.Millisecond │ Dates.Hour │ Dates.Minute │ Int64 │   Dict{String, Any} │
+├───────────────────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────────┼──────────────┼───────┼─────────────────────┤
+│ DeterministicSingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     1 hour │   30 minutes │     3 │ Dict{String, Any}() │
+└───────────────────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────────┴──────────────┴───────┴─────────────────────┘
+┌──────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │          resolution │ length │            features │
+│           String │           String │      Dates.DateTime │   Dates.Millisecond │  Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────┼─────────────────────┤
+│ SingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     24 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────┴─────────────────────┘

Notice we now have a load forecast data set with the resolution, horizon, and, interval matching our wind forecasts.

Retrieve the first forecast window:

julia> get_time_series_array(
+           DeterministicSingleTimeSeries,
+           load1,
+           "max_active_power";
+           start_time = DateTime("2020-01-01T08:00:00"),
+       )12×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T08:00:00 to 2020-01-01T08:55:00
+┌─────────────────────┬─────┐
+│                     │ A   │
+├─────────────────────┼─────┤
+│ 2020-01-01T08:00:00 │ 3.0 │
+│ 2020-01-01T08:05:00 │ 3.0 │
+│ 2020-01-01T08:10:00 │ 3.0 │
+│ 2020-01-01T08:15:00 │ 3.0 │
+│ 2020-01-01T08:20:00 │ 4.0 │
+│ 2020-01-01T08:25:00 │ 4.0 │
+│ 2020-01-01T08:30:00 │ 4.0 │
+│ 2020-01-01T08:35:00 │ 4.0 │
+│ 2020-01-01T08:40:00 │ 5.0 │
+│ 2020-01-01T08:45:00 │ 5.0 │
+│ 2020-01-01T08:50:00 │ 6.0 │
+│ 2020-01-01T08:55:00 │ 6.0 │
+└─────────────────────┴─────┘

See that load1's scaling factor multiplier is still being applied as expected.

Continue to the next section to address one more impact of calling transform_single_time_series! on the entire System.

Finding, Retrieving, and Inspecting Time Series

Now, let's complete this tutorial by doing a few sanity checks on the data that we've added, where are we will also examine components with time series and retrieve the time series data in a few more ways.

First, recall that we can print a component to check its has_time_series field:

julia> load1PowerLoad: load1:
+   name: load1
+   available: true
+   bus: ACBus: bus1
+   active_power: 0.0
+   reactive_power: 0.0
+   base_power: 10.0
+   max_active_power: 10.0
+   max_reactive_power: 0.0
+   services: 0-element Vector{Service}
+   dynamic_injector: nothing
+   ext: Dict{String, Any}()
+   InfrastructureSystems.SystemUnitsSettings:
+      base_value: 100.0
+      unit_system: UnitSystem.NATURAL_UNITS = 2
+   has_supplemental_attributes: false
+   has_time_series: true

Also, recall we can print the System to summarize the data in our system:

julia> systemSystem
+┌───────────────────┬───────────────┐
+│ Property          │ Value         │
+├───────────────────┼───────────────┤
+│ Name              │               │
+│ Description       │               │
+│ System Units Base │ NATURAL_UNITS │
+│ Base Power        │ 100.0         │
+│ Base Frequency    │ 60.0          │
+│ Num Components    │ 4             │
+└───────────────────┴───────────────┘
+
+Static Components
+┌───────────────────┬───────┐
+│ Type              │ Count │
+├───────────────────┼───────┤
+│ ACBus             │ 1     │
+│ PowerLoad         │ 2     │
+│ RenewableDispatch │ 1     │
+└───────────────────┴───────┘
+
+Time Series Summary
+┌───────────────────┬────────────────┬───────────────────────────────┬──────────
+│ owner_type        │ owner_category │ time_series_type              │ time_se ⋯
+│ String            │ String         │ String                        │ String  ⋯
+├───────────────────┼────────────────┼───────────────────────────────┼──────────
+│ PowerLoad         │ Component      │ DeterministicSingleTimeSeries │ Forecas ⋯
+│ PowerLoad         │ Component      │ SingleTimeSeries              │ StaticT ⋯
+│ RenewableDispatch │ Component      │ Deterministic                 │ Forecas ⋯
+│ RenewableDispatch │ Component      │ DeterministicSingleTimeSeries │ Forecas ⋯
+│ RenewableDispatch │ Component      │ SingleTimeSeries              │ StaticT ⋯
+└───────────────────┴────────────────┴───────────────────────────────┴──────────
+                                                               4 columns omitted

Notice that a new table has been added – the Time Series Summary, showing the count of each Type of component that has a given time series type.

Additionally, see that there are both Deterministic and DeterministicSingleTimeSeries forecasts for our RenewableDispatch generator (wind1). This was a side effect of transform_single_time_series! which added DeterministicSingleTimeSeries for all StaticTimeSeries in the system, even though we don't need one for wind.

Let's remove it with remove_time_series!. Since we have one wind generator, we could easily do it for that component, but let's do programmatically instead by its Type:

julia> for g in get_components(x -> has_time_series(x), RenewableDispatch, system)
+           remove_time_series!(system, DeterministicSingleTimeSeries, g, "max_active_power")
+       end

Notice that we also filtered for components where has_time_series is true, which is a simple way to find and manipulate components with time series.

Let's double check wind1 now:

julia> show_time_series(wind1)┌──────────────────┬──────────────────┬─────────────────────┬──────────────┬──────────────┬──────────────────────┬───────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │   resolution │      horizon │             interval │ count │            features │
+│           String │           String │      Dates.DateTime │ Dates.Minute │ Dates.Minute │    Dates.Millisecond │ Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼──────────────┼──────────────┼──────────────────────┼───────┼─────────────────────┤
+│    Deterministic │ max_active_power │ 2020-01-01T08:00:00 │    5 minutes │   60 minutes │ 1800000 milliseconds │     3 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴──────────────┴──────────────┴──────────────────────┴───────┴─────────────────────┘
+┌──────────────────┬──────────────────┬─────────────────────┬─────────────────────┬────────┬─────────────────────┐
+│ time_series_type │             name │   initial_timestamp │          resolution │ length │            features │
+│           String │           String │      Dates.DateTime │   Dates.Millisecond │  Int64 │   Dict{String, Any} │
+├──────────────────┼──────────────────┼─────────────────────┼─────────────────────┼────────┼─────────────────────┤
+│ SingleTimeSeries │ max_active_power │ 2020-01-01T08:00:00 │ 300000 milliseconds │     24 │ Dict{String, Any}() │
+└──────────────────┴──────────────────┴─────────────────────┴─────────────────────┴────────┴─────────────────────┘

See the unnecessary data is gone.

Finally, let's do a last data sanity check on the forecasts. Since we defined the wind time series in MW instead of scaling factors, let's make sure none of our forecasts exceeds the max_active_power parameter.

Instead of using get_time_series_array where we need to remember some details of the time series we're looking up, let's use get_time_series_keys to refresh our memories:

julia> keys = get_time_series_keys(wind1)2-element Vector{TimeSeriesKey}:
+ ForecastKey(Deterministic, "max_active_power", Dates.DateTime("2020-01-01T08:00:00"), Dates.Minute(5), Dates.Minute(60), Dates.Millisecond(1800000), 3, Dict{String, Any}())
+ StaticTimeSeriesKey(SingleTimeSeries, "max_active_power", Dates.DateTime("2020-01-01T08:00:00"), Dates.Millisecond(300000), 24, Dict{String, Any}())

See the forecast key is first, so let's retrieve it using get_time_series:

julia> forecast = get_time_series(wind1, keys[1])Deterministic("max_active_power", DataStructures.SortedDict(Dates.DateTime("2020-01-01T08:00:00") => [5.0, 6.0, 7.0, 7.0, 7.0, 8.0, 9.0, 10.0, 10.0, 9.0, 7.0, 5.0], Dates.DateTime("2020-01-01T08:30:00") => [9.0, 9.0, 9.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 5.0, 4.0, 4.0], Dates.DateTime("2020-01-01T09:00:00") => [6.0, 6.0, 5.0, 5.0, 4.0, 5.0, 6.0, 7.0, 7.0, 7.0, 6.0, 6.0]), Dates.Minute(5), nothing, InfrastructureSystems.InfrastructureSystemsInternal(UUID("6a9123a1-e6d9-484e-9305-5de5545a06f4"), nothing, nothing, nothing))

See that unlike when we used get_time_series_array, this returns an object we can manipulate.

Use iterate_windows to cycle through the 3 forecast windows and inspect the peak value:

julia> for window in iterate_windows(forecast)
+           @show values(maximum(window))
+       endvalues(maximum(window)) = [10.0]
+values(maximum(window)) = [9.0]
+values(maximum(window)) = [7.0]

Finally, use get_max_active_power to check the expected maximum:

julia> get_max_active_power(wind1)10.0

See that the forecasts are not exceeding this maximum – sanity check complete.

Tip

Unlike PowerLoad components, RenewableDispatch components do not have a max_active_power field, so check get_max_active_power to see how its calculated.

Next Steps

In this tutorial, you defined, added, and retrieved four time series data sets, including static time series and deterministic forecasts. Along the way, we reduced data duplication using normalized scaling factors for reuse by multiple components or component fields, as well as by referencing a StaticTimeSeries to address missing forecast data.

Next you might like to: