diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..302cd35 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,117 @@ + + + + + + +Page not found | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

Page not found +

+

The page you requested cannot be found (perhaps it was moved or renamed).

+

You may want to try searching to find the page's new location, or use +the table of contents to find the page you are looking for.

+
+
+
+
+
+ +
+
+ + + + diff --git a/docs/Lection1.md b/docs/Lection1.md new file mode 100644 index 0000000..008d35c --- /dev/null +++ b/docs/Lection1.md @@ -0,0 +1,26 @@ +# The Inroduction + +## The essence of maps + +Creating map is a useful way to take space into account in your research. +The common ways to explain why to do so are Tobler's laws of geography: + +> - Everything is related to everything else, but near things are more related than distant things +> - The phenomenon external to an area of interest affects what goes on inside +> --- Waldo Tobler\ + +In fact, you shall not interpret these as strict laws of any kind. However it +is very useful to treat these statements as initial hypotheses for spatial data +analysis. In order to check whether any spatial pattern is or is not presented +in a phenomenon, you can apply different techniques. Exploratory data analysis +can be performed with spatial data, displaying a map is a way to visually evaluate +quantitative features of spatial distribution, spatial statistics is a set of +techniques to estimate qualitative features of spatial distribution. And our +course follows this order to undercover you exciting world of spatial data analysis. + +- First lesson is a brief introduction to a domain +- In the second lesson we will talk about creating plots with spatial data and GeoDa +- The third is about creation of simple thematic maps with GeoDa +- The last three lessons are about spatial statistics applications + + diff --git a/docs/Lection2.md b/docs/Lection2.md new file mode 100644 index 0000000..aeedf5c --- /dev/null +++ b/docs/Lection2.md @@ -0,0 +1,105 @@ +--- +editor_options: + markdown: + wrap: sentence +--- + +# Working with graphics in GeoDa + +## Introduction +Today we are going to get acquaintanced with creating graphics for various statistic datasets in GeoDa. This GIS has prepared datasets and today we’ll use one of them. We’re going to work with **Boston Housing 1970s**, which contains housing and neighborhood data for the city of Boston based on research from the 1970s-90s. This dataset is a point shapefile with **506 observations** and **23 variables**. To open this data you have to choose _File>New_ and to choose _Boston Home Sales_ from _Sample Data_. After that you’ll be able to see the spatial distribution of the parameter. In the bottom left you’ll see the information about the number of observations. + +
+Opening the dataset +

(\#fig:unnamed-chunk-1)Opening the dataset

+
+ +
+Boston Housing 1970s +

(\#fig:unnamed-chunk-2)Boston Housing 1970s

+
+ +## Specific od data storage in GIS + +To understand what observations and variables stand for we have to find out some facts about the ways of storing data in GIS. In GIS each object in a dataset consists of 2 parts: **geometric** (you see it) and **semantic** (responsible for the property of the object and represented as a row in a table). So, the semantic part is a table, where each _line_ is an _object_ of a dataset and each _column_ contains the _characteristic of the object_. It means that the number of _observations_ is a number of _objects (rows)_ and the number of _variables_ stands for the number of _object characteristics (columns)_. + +
+Storing data in GIS +

(\#fig:unnamed-chunk-3)Storing data in GIS

+
+ +## Graphic types in GeoDa + +There’re 8 types of graphics in GeoDA: **Histogram, Box Plot, Scatter Plot, Scatter Plot, Matrix, Bubble Chart, 3D Scatter Plot, Conditional Plot** + +
+Types of graphics in GeoDa +

(\#fig:unnamed-chunk-4)Types of graphics in GeoDa

+
+ +### Histogram + +**Histogram** shows the meanings of one variable for each chosen object. You have to push the histogram button on the control panel and to choose the variable you need. If you want to create histogram not for all objects, but for concrete ones, you have to choose them either from the table or from the map. In that case the histogram will show the meanings of the variable for all objects and for chosen ones. To open the table, you have to push the button on the control panel. To chose other colors for the histogram or to export it as an image, you have to click it with the right button and to choose the option you need. This works for all types of graphics in GeoDa. + +
+Creating Histogram in GeoDa +

(\#fig:unnamed-chunk-5)Creating Histogram in GeoDa

+
+ +### Box plot + +**Boxplots** are created to represent the distribution of a numeric variable. The graphic reflects maximum and minimum values, median, first and last quantiles and p-values at the same time. To create boxplot, you also just have to push the button on the control panel and to choose the variable you need. Boxplot also has some numeric characteristics for easier interpretation. + +
+Creating Box plot in GeoDa +

(\#fig:unnamed-chunk-6)Creating Box plot in GeoDa

+
+ +### Scatter plot + +**Scatter plot** is based on using Cartesian coordinates to display values for typically 2 variables for a dataset. There’re _3 types_ of Scatter plots in GeoDa. To create each of them, you still have to push a specified button on a control panel and create the variables. For classical scatter plot you’ll have to choose 2 of them. The **3D Scatter plot** uses the 3-dimensial representation for 3 variables. Finally, the **Scatter plot Matrix** is a grid of scatter plots used to visualize bivariate relationships between combinations of variables. Here you can choose more than 2 or 3 variables for comparison, if you need. To create scatter plots, you also just have to push the button on the control panel and to choose the variable you need. + +
+Creating Scatterplot and Scatterplot Matrix in GeoDa +

(\#fig:unnamed-chunk-7)Creating Scatterplot and Scatterplot Matrix in GeoDa

+
+ +
+Creating 3D Scatterplot in GeoDa +

(\#fig:unnamed-chunk-8)Creating 3D Scatterplot in GeoDa

+
+ +### Bubble Chart + +A **bubble chart** is a type of data visualization that uses circles (bubbles) to represent data points in a two-dimensional plot. It is similar to a scatter plot, but uses bubbles instead of dots. Typically, a bubble chart shows the values of three numeric variables, with each circle representing an observation and its position on the plot indicating the values of two other variables. To create bubble chart, you also have to push the button on the control panel and to choose the variable you need. + +
+Creating Bubble Chart in GeoDa +

(\#fig:unnamed-chunk-9)Creating Bubble Chart in GeoDa

+
+ +### Parallel coordinates plot + +**Parallel coordinates plot** is a common way of visualizing and analyzing high-dimensional datasets. A point in n-dimensional space is represented as a polyline with vertices on the parallel axes and the position of the vertex corresponds to the coordinate of the point. To create it, you have to push the button on the control panel and to choose the variable you need. + +
+Creating Parallel coordinates plot in GeoDa +

(\#fig:unnamed-chunk-10)Creating Parallel coordinates plot in GeoDa

+
+ +### Conditional plot +* +**Conditional plot** consists of two variables conditional on the value of a third variable. You can create _a map, a histogram, a scatter plot or a boxplot_, using the button on a control panel. You’ll have to choose 3 variables and get 9 graphics, showing their dependencies. + +
+Creating a Conditional plot in GeoDa +

(\#fig:unnamed-chunk-11)Creating a Conditional plot in GeoDa

+
+ +## Practical exercise + +To check yourself after this lesson you have to built 3 Graphics for the observations with the towno=27. + 1. You have to create a histogram to analyze distances to Boston employment centers (dis); + 2. You have to create a histogram to analyze per capita crime (crim) and fix in *.txt file the minimum, maximum, mean and median values of the variable; + 3. You have to create a bubble chart to analyze the dependencies between such variables as age (x-axes), dis (y-axes), crim (bubble-size) and indus (bubble-color). +The result of your task must be represented by a txt-file with statistical parameters and 3 png-files with graphics. diff --git a/docs/Lection3.md b/docs/Lection3.md new file mode 100644 index 0000000..588cc87 --- /dev/null +++ b/docs/Lection3.md @@ -0,0 +1,122 @@ +# Thematic maps in Geoda + +Our today's lesson is about how to make simple thematic maps using GeoDa software. We will explore thematic mapping toolkit using Chicago Community Area dataset which has a large attribute table. It allows us to create a huge variety of thematic maps. + +
+Chicago Community Area dataset +

(\#fig:unnamed-chunk-1)Chicago Community Area dataset

+
+ +## What is a thematic map? + +But first, what is a thematic map? Roughly speaking, a thematic map is a map about certain theme. It's interesting to see some kind of geographical pattern of a particular subject matter that's why we use such maps. The GeoDa allows us to create different kinds of a thematic maps. So, let's focus on some of them. During the lesson, we will use the interface which is shown on the left part of the slide. + +
+Thematic maooing toolkit +

(\#fig:unnamed-chunk-2)Thematic maooing toolkit

+
+ +## Control panel + +When the window opens, you will notice several icons at the top. That tools are used to select elements on the map, invert the selection, zoom in and zoom out. Also you can add the basemap. The tools details we will describe later. + +
+Control panel +

(\#fig:unnamed-chunk-3)Control panel

+
+ +## Quantile map + +Now, let's explore some mapping options. You can create a map using quantiles, dividing the entire data array into equal parts. You have the opportunity to choose the number of parts, ranging from two to ten.This kind of map is effective in accurately depicting the distribution of the indicator. By dividing it into equal intervals, we can easily identify the geographical patterns of the phenomenon's distribution throughout the territory. + +
+Quantile map +

(\#fig:unnamed-chunk-4)Quantile map

+
+ +## Percentile map + +Another possible choropleth is a percentile map, which enables the visualization of the percentage distribution of the variable by region.This map is suitable for displaying a non-uniform distribution. + +
+Percentile map +

(\#fig:unnamed-chunk-5)Percentile map

+
+ +## Standard deviation map + +Another interesting map is the standard deviation map which shows the deviation of the variable in each area from the average for all areas. If you wish to present the deviation of values in each cell from the mean, then this map option can be utilized. + +
+Standard deviation map +

(\#fig:unnamed-chunk-6)Standard deviation map

+
+ +## Unique values map and choosing a color + +Sometimes it's important to create the unique values map. With this kind of map you can focus on the color customization options in detail. In previous examples we used a gradient scale filling. But it's also necessary to customize color palette for optimal appearance. To do so, right-click on the color icon, select "Flip Color for Category" from the menu, and choose the color from the options. + +
+Unique values map and choosing a color +

(\#fig:unnamed-chunk-7)Unique values map and choosing a color

+
+ +## Custom breaks with category editor + +Another helpful feature in GeoDa is a scale division using different methods. The methods are natural intervals and equal intervals. Also you can create your own custom division method adjusting such parameters as the number of intervals, a value, and a method.This option is useful if you want to selectively highlight specific value groups and indicate them on the map. This can assist the data user in establishing logical connections. + +
+Custom breaks with category editor +

(\#fig:unnamed-chunk-8)Custom breaks with category editor

+
+ +## Bubble map (cartogram) + +You can create bubble map or cartogram with two variables. On picture on the right you can see that a circle size and a color visualize two different variables. All the previous maps have demonstrated the distribution of a single indicator. If you need to showcase the spatial relationship between two indicators, then this version of the map should be used. + +
+Bubble map (cartogram) +

(\#fig:unnamed-chunk-9)Bubble map (cartogram)

+
+ +## Basemap + +In conclusion, it is important to note a big variety of available basemaps in the software. You can choose not only default maps and satellite images but also specify a path to other map server location. + +
+Basemap +

(\#fig:unnamed-chunk-10)Basemap

+
+ +## Save and export + +To save your map, right-click on an empty space in the map window and select "Save Image As." In the window that appears, you can adjust the map size and position of the legend. + +
+Save and export +

(\#fig:unnamed-chunk-11)Save and export

+
+ +## Exercise + +As an exercise, you should create three different maps using the specified dataset. The first map is a quantile map with 6 intervals, the second map is a percentile map and the third one is a standard deviation map. Write 5 sentences about differences between the first two maps. Change the colors and select a basemap for the standard deviation map. Save all three maps in .png format. + +## Cheat Sheet + +1. If you want to reflect 1 indicator: + 1. Use a quantile map if you want to display + a measure divided into equal intervals; + 2. Use a percentile map if you want a different + division of the indicator; + 3. If you wish to present the deviation of values in + each cell from the mean, then this map option + can be utilized + 4. If you want to represent the deviation of values ​​ + in each map cell from the mean, use + a standard deviation map + 5. You can use a unique values map if you want to + mark areas where the indicator values ​​are the same; + 6. You can use other scale division options to + manipulate data and visualize it on a map. +2. If you need to demonstrate spatial relationships +between two indicators, then a cartogram should be used. diff --git a/docs/Lection4.md b/docs/Lection4.md new file mode 100644 index 0000000..bbf722b --- /dev/null +++ b/docs/Lection4.md @@ -0,0 +1,183 @@ +--- +editor_options: + markdown: + wrap: sentence +--- + +# Clustering algorithms in real life problems + +## Clustering goals: + +- Simplifying data processing + +- Data compression + +- Identification of anomalies (atypical objects) + +- Building a hierarchy of objects + +## Where was it used? + +
+Pickpoints in taxi +

(\#fig:unnamed-chunk-1)Pickpoints in taxi

+
+ +
+Multy-scale clustering in gallery +

(\#fig:unnamed-chunk-2)Multy-scale clustering in gallery

+
+ +## Clustering issues: + +- Fuzzy problem statement + +- Variety of quality criteria + +- Prevalence of heuristic approaches + +- Unknown number of clusters + +- Dependence of the result on the selected metric + +## Most popular Clustering algorithms: + +1. Statistical clustering + +- K-mean +- ISODATA +- FOREL (formal elements) + +2. Hierarchical/graph clustering +3. Density Clustering (DBSCAN/OPTICS) + +## K-means method + +1. Set the number of clusters K +2. Select randomly K points as cluster centers +3. Determine the nearest cluster center for each point +4. Calculate a new cluster center based on the coordinates of its points +5. Repeat steps 3-4 until the cluster centers stop changing their location. + +
+Example with four clusters: +

(\#fig:unnamed-chunk-3)Example with four clusters:

+
+ +
+All points of the resulting clusters are located inside the cells of the Voronoi diagram for the centers of these clusters: +

(\#fig:unnamed-chunk-4)All points of the resulting clusters are located inside the cells of the Voronoi diagram for the centers of these clusters:

+
+ +
+The algorithm is good at identifying only spatially separated clusters of convex shape.: +

(\#fig:unnamed-chunk-5)The algorithm is good at identifying only spatially separated clusters of convex shape.:

+
+ +## ISODATA + +Iterative Self-Organizing Data Analysis Technique Algorithm + +The method starts with one cluster and performs a recursive division of the set along its longest axis until all intra-cluster distances are within a given tolerance. +The working algorithm is presented below: + +
+ISODATA method +

(\#fig:unnamed-chunk-6)ISODATA method

+
+ +ISODATA method compared to K-means: + +1. It is not necessary to specify the number of clusters. +2. A more robust method for calculating the resulting clusters. +3. Also not effective in identifying irregularly shaped clusters. + +## Hierarchical clustering + +- It is recommended to use Ward's distance (red line at the picture) +- It makes sense to build several options and choose the best one +- The clustering level is obtained by pruning the tree at a given distance. + +
+Hierarchical method +

(\#fig:unnamed-chunk-7)Hierarchical method

+
+ +## DBSCAN + +Advantages: 1. +The number of clusters is not required. +2. +Can find clusters of stable forms. +It may even find a cluster that is completely surrounded by, but not connected to, another cluster. +3. +Creates noise and is resistant to emissions. +4. +Only two parameters required + +DISAdvantages: 1. +Not completely deterministic: edge points accessible from more than one cluster may be part of any cluster, depending on the order in which the data is processed. +2. +Cannot group data sets well where the clusters have different densities. + +
+DBSCAN method +

(\#fig:unnamed-chunk-8)DBSCAN method

+
+ +
+DBSCAN method +

(\#fig:unnamed-chunk-9)DBSCAN method

+
+ +The described clustering methods are far from the only ones, but they are among the most popular. +The described clustering methods are far from the only ones, but they are among the most popular. +Next, we will look at how these methods are implemented in GEODA. + +## GEODA interface + +When opening the clustering tools in GeoDA, you can select the clustering method, and then the number of clusters, selection distances, the minimum number of points in the class, etc. + +
+1 - button with clustering tools, 2 - clustering methods? 3 - window with option of clustering +

(\#fig:unnamed-chunk-10)1 - button with clustering tools, 2 - clustering methods? 3 - window with option of clustering

+
+ +## What Data should I use for clustering? + +Clustering can occur on the basis of attribute data, spatial data and their joint significance. +At the same time, we can combine attributive and spatial data both in equal importance and giving greater weight to one of the data categories. + +
+Variants of how clusters look, depending on the choice of data on which clustering is based. +

(\#fig:unnamed-chunk-11)Variants of how clusters look, depending on the choice of data on which clustering is based.

+
+ +*ATTENTION! Use projected coordinates. NOT geographic coordinates.This is necessary for correct calculation of distances. For example, UTM zone 31 N* + +We suggest looking at the results of different clustering methods on test data. +Test Data Attributes (France, 18th century): +1. Used indicators for example: +2. Population per Crime against persons +3. Population per Crime against property. +4. Percent of military scripts who can read and write. +5. Donations to the poor. +6. Population per illegitimate birth. +7. Population per suicide. + +
+1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical +

(\#fig:unnamed-chunk-12)1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical

+
+ +**HOMETASK: Build a network of electric charging stations for cars in a small town** + +Electric charging infrastructure is rapidly developing around the world. Imagine that in the small city of your choice there is not a single fast charger for cars. The cost of their construction is high, which means it is necessary to optimally place a small number of fast charging stations. According to the plan, one charging station will be installed per 10,000 people in the city. +Exercise: +1. Select a small city (50,000 to 100,000 people). +2. For each house, add a field with the number of apartments or number of residents. +3. Get centroids of residential buildings +4. Group a given set of points. The number of clusters must correspond to the population of the selected city (1 charging station = 1 cluster = 10,000 people). +5. Select the optimal location of charging stations, based on the fact that they should be close to the geometric center of the resulting clusters. +6. Justify the choice of clustering method for this task based on the lecture materials. Draw up a map(s) to justify the optimal location of charging stations, describe the characteristics of the resulting clusters. +Send maps and justification for the chosen clustering method to: vitaliy_mapgeo@mail.ru diff --git a/docs/Lection5.md b/docs/Lection5.md new file mode 100644 index 0000000..98afda3 --- /dev/null +++ b/docs/Lection5.md @@ -0,0 +1,203 @@ +--- +editor_options: + markdown: + wrap: sentence +--- + +# Spatial statistics in GeoDa. Part 1 + +## What is spatial statistics? + +**Spatial statistics** is a branch of mathematical statistics that deals with the numerical description of variables distributed in geographic space. +Most often, tools of spatial statistics are used to solve the problem of interpolation. +In other words, we reconstruct a continuous field of distribution of a random variable from a limited set of data at observation points. +However, spatial statistics as a scientific discipline is much wider, with its primary task being the statistical *description of spatial distributions*. + +## Why spatial statistics is important? + +Spatial statistics is based on a widely developed mathematical apparatus, and understanding the basics of it is a necessary condition for the deliberate use of geostatistical methods in practice. +The world of spatial statistics is based on the fundamental concepts of *random variables*, *random functions*, and *random processes*. +Measuring uncertainty is critical to decision making because it provides information about possible outcomes for all locations, not just one predicted value. +The GeoDa software has a wide range of spatiostatistical tools, primarily focused on finding spatial correlations in existing data. +So, it is essential to explore how to use GeoDa to solve spatial tasks. + +
+Spatial Econometrics topic in [Science Direct portal](https://www.sciencedirect.com/topics/social-sciences/spatial-econometrics) +

(\#fig:unnamed-chunk-1)Spatial Econometrics topic in [Science Direct portal](https://www.sciencedirect.com/topics/social-sciences/spatial-econometrics)

+
+ +## Theory + +The starting point of geostatistical analysis is a set of points $\{p_1,p_2,...,p_n\}$ called **locations**, each of which includes the value $\{Z(p_1),Z(p_2),...,Z(p_n)\}$ of some spatial variable. +The spatial and attribute components are traditionally divided into two, and both can be random. +Values in locations are obtained by measuring a spatially distributed variable. +The measurement results, like the data used for calculations, usually characterize the state of the environment at a certain moment. +To work with such data, the concept of a random variable is used. +Therefore, a *random variable* is a function that, as a result of a random event, takes on a real value, and a random process is a family of random variables indexed by some parameter. + +> **Random variable** $Z(w)$ is a function, that, as a result of a random event $w$, takes on a real value +> +> **Random process** is a family of *random variables* indexed by some parameter $t$ + +## Pre-prepared data + +Now, let's explore the existing pre-prepared data available in the software. +For example, we can examine the **Boston Housing 1970s** dataset, which includes housing and neighborhood data for the city of Boston based on research from the 1970s---90s. + +
+Overview of Boston Housing 1970s dataset +

(\#fig:unnamed-chunk-2)Overview of Boston Housing 1970s dataset

+
+ +It contains 506 observations with 23 variables, each point representing a house for sale. + +Let's take two variables from the dataset that will help us solve a specific problem. +Imagine you are working in the Boston housing market. +It is necessary to find out in which part of the city it is profitable to sell housing with a large number of rooms. +So the numeric vectors of median values of owner-occupied housing in \$USD (*medv*) and the average numbers of rooms per dwelling (*rm*), can help us determine whether the value of a variable depends on the surroundings of points in space. + +## Moran's I tests + +One of the easiest ways to study whether there is a relationship between values in each location and in neighboring locations is the **Moran's Index test**. +Moran's I statistic is arguably the most commonly used indicator of global spatial autocorrelation, expressed as a cross-product statistic between a variable and its spatial lag, with the variable expressed in deviations from its mean. +Moran's I statistic is then given by the formula: + +$I = \frac{\sum_{i} \sum_{j} w_ij z_i \cdot z_j/S_0}{\sum_{i}z_i^2/n}$ + +with $w$ as the elements of the spatial weights matrix, $S_0$ as the sum of all the weights, and n as the number of observations. + +## Weights matrix creation + +First of all, we need to calculate the spatial weights matrix. +To do this, **click on the "W" icon** located on the instrument panel. + +
+Weight Manager icon +

(\#fig:unnamed-chunk-3)Weight Manager icon

+
+ +In the pop-up window, we begin to create a matrix of weights by **clicking the "create" button**. + +
+Weight Manager icon +

(\#fig:unnamed-chunk-4)Weight Manager icon

+
+ +The study of spatial autocorrelation begins with an analysis of *geographic proximity*. +That is, for each analyzed unit, we must determine the adjacent units. +This is not so simple because there are many ways to define a neighborhood. +GeoDa can calculate spatial weights **by contiguity** and **by distance**. +Contiguity-based adjacency is used when analyzing data associated with area units, such as an administrative division grid. +So, this is not our case, and we will calculate [distance weights]{.underline}. +**Select the ID variable** at the top of the window, then **select the X- and Y-coordinate variables** from the list below. +Leave the rest of the fields with default settings. +**Click "create"** and **save the spatial weight file in your home directory**. + +
+Weight Manager icon +

(\#fig:unnamed-chunk-5)Weight Manager icon

+
+ +## Visualizing adjacency + +After that, in the "Weights Manager" pop-up window, you can see that **the characteristics of the weights file appear**. + +
+Spatial weights table in _Weights Manager_ +

(\#fig:unnamed-chunk-6)Spatial weights table in _Weights Manager_

+
+ +In that window, you can also explore a neighbors' histogram, connectivity map, and connectivity graph. + +
+Connectivity map +

(\#fig:unnamed-chunk-7-1)Connectivity map

+
+Connectivity graph +

(\#fig:unnamed-chunk-7-2)Connectivity graph

+
+Neighbours' histogram +

(\#fig:unnamed-chunk-7-3)Neighbours' histogram

+
+ +It's interesting to see how the spatial algorithm works, and it's also helpful to choose the correct type of adjacency to create appropriate spatial weights. + +## Global Moran's I test + +Now that a weights matrix has been created, we will use the **Moran's I tests** to estimate the best district for selling houses. +This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. +Based on Moran's test result, we can estimate spatial regression for different types of forecasts. +There are two basic types of Moran's tests. + +*The global Moran's test* evaluates the presence of statistical dependence for the entire set of points, while the local test evaluates each point separately. +First of all, let's calculate the univariate Moran's test. +**Click on the Space tab**, **choose the Univariate Moran's I test**, **select the "*medv*" variable**, and **click OK**. + +
+Univariate Moran's I menu +

(\#fig:unnamed-chunk-8)Univariate Moran's I menu

+
+ +The Moran's test scatter plot appears. + +
+Univariate Moran's I scatter plot +

(\#fig:unnamed-chunk-9)Univariate Moran's I scatter plot

+
+ +Moran's index ranges from -1 to 1. +Our result is 0.269, which means that there is a weak statistical relationship between the cost of housing at each point and the neighboring points. +We can also **estimate a bivariate Moran's test** in same way. +Instead of using the univariate Moran's test, **click on the bivariate Moran's test** and **select the *medv* and *rm* variables**. + +
+Bivariate Moran's menu +

(\#fig:unnamed-chunk-10-1)Bivariate Moran's menu

+
+Bivariate Moran's I scatter plot +

(\#fig:unnamed-chunk-10-2)Bivariate Moran's I scatter plot

+
+ +The spatial correlation between housing medium values and number of rooms is exist. +Now let's explore in which areas of Boston will the relationship between variables be the greatest. + +## Local Moran's I test + +For that purpose we can calculate **the Local Moran's I test**. +This test is much more interesting than the global test because we can create maps. +Let's try to calculate the univariate Local Moran's test. +**Select the *medv* variable** once again and **click OK**. + +
+Local Moran's I map menu +

(\#fig:unnamed-chunk-11)Local Moran's I map menu

+
+ +In the pop-up window, you can choose three types of graphics. + +The first two are the cluster and significance maps that illustrate the spatial statistical differences. +**Mark both maps and click OK**. + +The cluster map shows how strongly the cost of housing in neighboring locations is related to the cost of housing in each location, and the significance map shows how significant a statistical relationship is. +The smaller the p-value, the greater the significance. + +Similarly, you can perform a local Moran's test for two variables. +Just choose the *medv* and *rm* values in the pop-up window, and you will see a result. + +
+Cluster map +

(\#fig:unnamed-chunk-12-1)Cluster map

+
+Significance map +

(\#fig:unnamed-chunk-12-2)Significance map

+
+ +The cluster map allows us to understand in which areas of the city housing with a big number of rooms can be sold at a higher price. +In the *high-high* and *low-low* areas houses with a small number of rooms are located. +It is not profitable to sell housing with a large number of rooms there. + +Interesting to explore the *high-low* areas. +Houses with a small number of rooms are located there. +At the same time, there are houses with a large number of rooms around. +Increasing prices for such apartments will not have a repulsive effect. +It means that we **need to choose a *high-low* areas** to increase housing prices as a realtor. diff --git a/docs/Lection6.md b/docs/Lection6.md new file mode 100644 index 0000000..3941cb3 --- /dev/null +++ b/docs/Lection6.md @@ -0,0 +1,173 @@ +# Spatial statistics in GeoDa. Part 2 +## Previous lection +In the previous lesson you have learned why spatial dependence is important, also you have learned some basics including Moran’s Index. +There are two types of Moran's statistics. First is global Moran's test. This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. +Second is local Moran's test. Using this method you can create maps which can illustrate the spatial statistical differences between variables. +In general, Moran's Index is needed when you need to prove the importance of connection between two variables. +But also there are a lot of different methods to explore the data. + +## Theme of the lesson + +In this lesson you will study the additional spatial statistics methods represented in GeoDa: + ++ Joint Count ++ Local Geary ++ Quantile LISA ++ Spatial Correlogram ++ Linear regression + +## Contiguity and spatial weights +Contiguity and spatial weights are the two things which you can use in the weight manager in the next cases. + +In its simplest form, the *spatial weights* matrix expresses the existence of a neighbor relation as a binary relationship, with weights 1 and 0. Usually this matrix is very sparse with a lot of zeros in it. + +Contiguity means that two spatial units share a common border of non-zero length. Operationally, we can further distinguish between a rook and a queen criterion of contiguity, in analogy to the moves allowed for the such-named pieces on a chess board. + +## Joint count methods +### Theoretical basis +Joint Count method is a technique for processing discrete variables, especially for binary variables. It is used to identify clusters in binary variables by means of the local joint count statistics. The statistics consists of counting the joins that correspond to occurrences of value pair at neighboring locations. Mathematic representation of this method: +$$ +BB_i = x_i\sum_{j}{w_i w_j}x_j +$$ +This equation means that Joint Count is a sum of neighbors of $x_i$ which are have the same value that x. In conclusion, you can use these methods to determine if there is a spatial connection between events or they are distributed in the random way. +### Implementation in GeoDa +To create map using this method you have to create a weight matrix first: +1. Open the Weights Manager +2. Choose "Create" +3. Select an ID variable in your dataset +4. Choose type of contiguity +5. Choose variable as spatial weight +6. Save the weight data +In the end you will see similar picture: + +
+Weights Manager +

(\#fig:unnamed-chunk-1)Weights Manager

+
+ +After creating the weight matrix you can make the map. The only available option is a significant map. +1. Open Local Joint Count in Space bar menu +2. Select the variable you want to explore + +
+Local Join Count Significance Map +

(\#fig:unnamed-chunk-2)Local Join Count Significance Map

+
+ +This map represents a spatial significance of negative population growth in Chicago city, IL. It means that the regions colored in green have strong connection between their location and decreasing its population. The reason can be different, but this reason stronngly affects to them. + +## Local Geary +### Theoretical basis +Local Geary is a method to find the spatial autocorrelation through dissimilarity of data. It means that small values of the statistics suggest positive spatial autocorrelation, whereas large values suggest negative spatial autocorrelation. It can be more precise that Local Moran test in some cases because of differences in attribute similarity. + +### Implementation in GeoDa +First, you need to prepare the weight matrix like in the previous step. Next step is to open "Local Geary" in Space bar menu and select the variable. +In spite of Joint Count method you can choose two options for the maps. First is a cluster map which is a representation of attribute dependencies. Second variant is a significance map like in the Joint Count method. + +
+Local Geary Cluster Map. Tuberculosis in Chicago +

(\#fig:unnamed-chunk-3)Local Geary Cluster Map. Tuberculosis in Chicago

+
+ +The cluster map is a great way to show spatial dependencies connected with attributes. Theoretically there are five categories. +First category is a "Not Significant". It means that there is no dependency between attribute and spatial component. Second category is a "High-High". It this category there is a strong positive connection between attribute and location. The next category is a "Low-Low". This category represents straight, but negative connection. It means that surrounding area has the similar low values of the attribute like this regions. The fourth category represents low significant straight connection. The last category is about negative connection between this region and surrounding area. +But what it means in the practical way? Map shown in the top represents the connection between location and tuberculosis spreading, but let's imagine that it is a cost of the flat in condominium. In the areas with "High-High" category there are high prices both in the colored regions and surrounding area. In the "Low-Low" areas cost is low in the similar way. Despite of this places the areas with negative connection have a potential for a good deal. You need to estimate is this place has a lower price that in surrounding area or not. If it is you can save your money. + + +
+Local Geary Significance Map. Tuberculosis in Chicago +

(\#fig:unnamed-chunk-4)Local Geary Significance Map. Tuberculosis in Chicago

+
+ +The Significance map represents power of the connection between attributes and spatial location like in the Joint Count method. + +## Quantile LISA + +### Theoretical basis + +Quantile LISA or quantile local spatial autocorrelation is a method to find spatial autocorrelation between two or multiple continuous variables. Linear association measured by Bivariate Local Moran suffers from the location problem. Quantile LISA added a spatial component for measuring correlations. More often it is used when the focus is on extremes of the distribution. + +### Implementation in GeoDa + +First do the steps like in Joint Count and Local Geary methods with creation of spatial weights. Next you need to select the variables and quantiles for analysis. + +
+Selecting quantiles and number of quantiles +

(\#fig:unnamed-chunk-5)Selecting quantiles and number of quantiles

+
+ +Let's explore how extreme poverty is connected with teen pregnancy. Select the category and use the last quantile. In this case we will see the dependency between proportion of people with income less than 50% of povery minimum and number of teen pregnancies. + +
+Quantile LISA Significance Map. Connection between extreme povery and number of teenage pregnancies +

(\#fig:unnamed-chunk-6)Quantile LISA Significance Map. Connection between extreme povery and number of teenage pregnancies

+
+ +Like in the previous methods we can make a significance map representing power of spatial correlation between attributes. + +## Spatial correlogram + +### Theoretical basis + +A non-parametric spatial correlogram is an alternative measure of global spatial autocorrelation that does not rely on the specification of a spatial weights matrix. Instead, a local regression is fit to the covariances, or correlations computed for all pairs of observations as a function of the distance between them. The non-parametric correlogram is computed by means of a local regression on the pairwise correlations that fall within each distance bin. The number of bins determines the distance range of each bin. This range is the maximum distance divided by the number of bins. The more bins are chosen, the more fine-grained the correlogram will be + +### Implementation in GeoDa + +First choose Spatial correlogram in space bar tools. Next choose the data. You will see the "Correlogram Parameters" menu. + +
+Selecting quantiles and number of quantiles +

(\#fig:unnamed-chunk-7)Selecting quantiles and number of quantiles

+
+ +You should choose variable for analysis and number of beans first. Note that there is an option that it will be no spatial dependency between distance of the regions and attribute values. + +
+Correlogram between number of assaults and distance +

(\#fig:unnamed-chunk-8)Correlogram between number of assaults and distance

+
+ +As you can see there is a little dependency between this two variables. It means that number of assaults decreases with increasing distance parameter between two regions. It can representate the fact that unfortunate districts are close to each other and they are located in the big distance from prosperous ones. + + +## Regression + +### Theoretical basis + +Regression analysis is a set of statistical processes for estimating the relationship between a dependent variable and one or more independent variables. In the standard regression parameters of the model are constant. It means that there is no difference in spatial dependence between variables. To solve this problem, you can use geographically weighted regression. In this method weights are defined for every location individually. In the mathematical point of view weight coefficient matrix is used where close points have higher influence rate than far ones. + +### Implementation in GeoDa + +* Note that regression is in different menu than other spatial statistics tools +* You need to select dependent and independent variables +* You may add additional weights file + +
+Settings of the regression +

(\#fig:unnamed-chunk-9)Settings of the regression

+
+ +After processing you will see the Regression Report. + +
+Regression Report +

(\#fig:unnamed-chunk-10)Regression Report

+
+ +There are two key points in it. First: R-squared – statistical measure that determines the proportion of variance in the dependent variable that can be explained by the independent variable. Second: F-value – statistical measure where the null hypothesis is that all the regression coefficients are equal to zero. In this case regression can't predict the model of connection between data. + +## Conclusion + +* Use Joint Count methods if you need to process with binary data +* Use Local Geary methods if you need to describe the contiguous data and find similarity and dissimilarity areas +* Use Quantile LISA if you need to process contiguous data with multiple variable and find an autocorrelation +* Use spatial correlogram if you need to find correlation between differences of variable and different distances +* Use a regression to prove your concept + +## Task + +* Explore the spatial correlation between poverty with cancer deaths per 100 000 people in Chicago region. +* Use this dataset: https://geodacenter.github.io/data-and-lab/comarea_vars/ +* Use Pov200P as an independent variable and CancerAll as dependent variable +* Try Local Geary and Quantile LISA to find autocorrelation and make map. In the end use regression tool to make a conclusion between their dependency +* Describe the result which you get with significance maps and regression report diff --git a/docs/clustering-algorithms-in-real-life-problems.html b/docs/clustering-algorithms-in-real-life-problems.html new file mode 100644 index 0000000..827c7cb --- /dev/null +++ b/docs/clustering-algorithms-in-real-life-problems.html @@ -0,0 +1,344 @@ + + + + + + +Chapter 5 Clustering algorithms in real life problems | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+5 Clustering algorithms in real life problems +

+
+

+5.1 Clustering goals: +

+
    +
  • Simplifying data processing

  • +
  • Data compression

  • +
  • Identification of anomalies (atypical objects)

  • +
  • Building a hierarchy of objects

  • +
+
+
+

+5.2 Where was it used? +

+
+ +Pickpoints in taxi

+Figure 3.1: Pickpoints in taxi +

+
+
+ +Multy-scale clustering in gallery

+Figure 3.2: Multy-scale clustering in gallery +

+
+
+
+

+5.3 Clustering issues: +

+
    +
  • Fuzzy problem statement

  • +
  • Variety of quality criteria

  • +
  • Prevalence of heuristic approaches

  • +
  • Unknown number of clusters

  • +
  • Dependence of the result on the selected metric

  • +
+
+ +
+

+5.5 K-means method +

+
    +
  1. Set the number of clusters K
  2. +
  3. Select randomly K points as cluster centers
  4. +
  5. Determine the nearest cluster center for each point
  6. +
  7. Calculate a new cluster center based on the coordinates of its points
  8. +
  9. Repeat steps 3-4 until the cluster centers stop changing their location.
  10. +
+
+ +Example with four clusters:

+Figure 3.3: Example with four clusters: +

+
+
+ +All points of the resulting clusters are located inside the cells of the Voronoi diagram for the centers of these clusters:

+Figure 3.4: All points of the resulting clusters are located inside the cells of the Voronoi diagram for the centers of these clusters: +

+
+
+ +The algorithm is good at identifying only spatially separated clusters of convex shape.:

+Figure 3.5: The algorithm is good at identifying only spatially separated clusters of convex shape.: +

+
+
+
+

+5.6 ISODATA +

+

Iterative Self-Organizing Data Analysis Technique Algorithm

+

The method starts with one cluster and performs a recursive division of the set along its longest axis until all intra-cluster distances are within a given tolerance. +The working algorithm is presented below:

+
+ +ISODATA method

+Figure 3.6: ISODATA method +

+
+

ISODATA method compared to K-means:

+
    +
  1. It is not necessary to specify the number of clusters.
  2. +
  3. A more robust method for calculating the resulting clusters.
  4. +
  5. Also not effective in identifying irregularly shaped clusters.
  6. +
+
+
+

+5.7 Hierarchical clustering +

+
    +
  • It is recommended to use Ward’s distance (red line at the picture)
  • +
  • It makes sense to build several options and choose the best one
  • +
  • The clustering level is obtained by pruning the tree at a given distance.
  • +
+
+ +Hierarchical method

+Figure 3.7: Hierarchical method +

+
+
+
+

+5.8 DBSCAN +

+

Advantages: 1. +The number of clusters is not required. +2. +Can find clusters of stable forms. +It may even find a cluster that is completely surrounded by, but not connected to, another cluster. +3. +Creates noise and is resistant to emissions. +4. +Only two parameters required

+

DISAdvantages: 1. +Not completely deterministic: edge points accessible from more than one cluster may be part of any cluster, depending on the order in which the data is processed. +2. +Cannot group data sets well where the clusters have different densities.

+
+ +DBSCAN method

+Figure 3.8: DBSCAN method +

+
+
+ +DBSCAN method

+Figure 3.9: DBSCAN method +

+
+

The described clustering methods are far from the only ones, but they are among the most popular. +The described clustering methods are far from the only ones, but they are among the most popular. +Next, we will look at how these methods are implemented in GEODA.

+
+
+

+5.9 GEODA interface +

+

When opening the clustering tools in GeoDA, you can select the clustering method, and then the number of clusters, selection distances, the minimum number of points in the class, etc.

+
+ +1 - button with clustering tools, 2 - clustering methods? 3 - window with option of clustering

+Figure 3.10: 1 - button with clustering tools, 2 - clustering methods? 3 - window with option of clustering +

+
+
+
+

+5.10 What Data should I use for clustering? +

+

Clustering can occur on the basis of attribute data, spatial data and their joint significance. +At the same time, we can combine attributive and spatial data both in equal importance and giving greater weight to one of the data categories.

+
+ +Variants of how clusters look, depending on the choice of data on which clustering is based.

+Figure 3.11: Variants of how clusters look, depending on the choice of data on which clustering is based. +

+
+

ATTENTION! Use projected coordinates. NOT geographic coordinates.This is necessary for correct calculation of distances. For example, UTM zone 31 N

+

We suggest looking at the results of different clustering methods on test data. +Test Data Attributes (France, 18th century): +1. Used indicators for example: +2. Population per Crime against persons +3. Population per Crime against property. +4. Percent of military scripts who can read and write. +5. Donations to the poor. +6. Population per illegitimate birth. +7. Population per suicide.

+
+ +1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical

+Figure 5.1: 1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical +

+
+

HOMETASK: Build a network of electric charging stations for cars in a small town

+

Electric charging infrastructure is rapidly developing around the world. Imagine that in the small city of your choice there is not a single fast charger for cars. The cost of their construction is high, which means it is necessary to optimally place a small number of fast charging stations. According to the plan, one charging station will be installed per 10,000 people in the city. +Exercise: +1. Select a small city (50,000 to 100,000 people). +2. For each house, add a field with the number of apartments or number of residents. +3. Get centroids of residential buildings +4. Group a given set of points. The number of clusters must correspond to the population of the selected city (1 charging station = 1 cluster = 10,000 people). +5. Select the optimal location of charging stations, based on the fact that they should be close to the geometric center of the resulting clusters. +6. Justify the choice of clustering method for this task based on the lecture materials. Draw up a map(s) to justify the optimal location of charging stations, describe the characteristics of the resulting clusters. +Send maps and justification for the chosen clustering method to:

+ +
+
+
+ +
+
+ + + + diff --git a/docs/images/2_10_Creating_a_Parallel_coordinates_plot_in_GeoDa.png b/docs/images/2_10_Creating_a_Parallel_coordinates_plot_in_GeoDa.png new file mode 100644 index 0000000..8f093e1 Binary files /dev/null and b/docs/images/2_10_Creating_a_Parallel_coordinates_plot_in_GeoDa.png differ diff --git a/docs/images/2_11_Creating_a_Conditional_plot_in_GeoDa.png b/docs/images/2_11_Creating_a_Conditional_plot_in_GeoDa.png new file mode 100644 index 0000000..0d7e181 Binary files /dev/null and b/docs/images/2_11_Creating_a_Conditional_plot_in_GeoDa.png differ diff --git a/docs/images/2_1_Opening_the_dataset.png b/docs/images/2_1_Opening_the_dataset.png new file mode 100644 index 0000000..cd16ddf Binary files /dev/null and b/docs/images/2_1_Opening_the_dataset.png differ diff --git a/docs/images/2_2_Boston_Housing_1970s.png b/docs/images/2_2_Boston_Housing_1970s.png new file mode 100644 index 0000000..496a605 Binary files /dev/null and b/docs/images/2_2_Boston_Housing_1970s.png differ diff --git a/docs/images/2_3_Storing_data_in_GIS.png b/docs/images/2_3_Storing_data_in_GIS.png new file mode 100644 index 0000000..0811984 Binary files /dev/null and b/docs/images/2_3_Storing_data_in_GIS.png differ diff --git a/docs/images/2_4_Types_of_graphics_in_GeoDa.png b/docs/images/2_4_Types_of_graphics_in_GeoDa.png new file mode 100644 index 0000000..2083e75 Binary files /dev/null and b/docs/images/2_4_Types_of_graphics_in_GeoDa.png differ diff --git a/docs/images/2_5_Creating_Histogram_in_GeoDa.png b/docs/images/2_5_Creating_Histogram_in_GeoDa.png new file mode 100644 index 0000000..559d210 Binary files /dev/null and b/docs/images/2_5_Creating_Histogram_in_GeoDa.png differ diff --git a/docs/images/2_6_Creating_Boxplot_in_GeoDa.png b/docs/images/2_6_Creating_Boxplot_in_GeoDa.png new file mode 100644 index 0000000..273a080 Binary files /dev/null and b/docs/images/2_6_Creating_Boxplot_in_GeoDa.png differ diff --git a/docs/images/2_7_Creating_Scatterplot_and_Scatterplot_Matrix_in_GeoDa.png b/docs/images/2_7_Creating_Scatterplot_and_Scatterplot_Matrix_in_GeoDa.png new file mode 100644 index 0000000..33a8535 Binary files /dev/null and b/docs/images/2_7_Creating_Scatterplot_and_Scatterplot_Matrix_in_GeoDa.png differ diff --git a/docs/images/2_8_Creating_3D_Scatterplot_in_GeoDa.png b/docs/images/2_8_Creating_3D_Scatterplot_in_GeoDa.png new file mode 100644 index 0000000..1c2c1c5 Binary files /dev/null and b/docs/images/2_8_Creating_3D_Scatterplot_in_GeoDa.png differ diff --git a/docs/images/2_9_Creating_a_Bubble_Chart_in_GeoDa.png b/docs/images/2_9_Creating_a_Bubble_Chart_in_GeoDa.png new file mode 100644 index 0000000..e876df6 Binary files /dev/null and b/docs/images/2_9_Creating_a_Bubble_Chart_in_GeoDa.png differ diff --git a/docs/images/DATA_TYPE.png b/docs/images/DATA_TYPE.png new file mode 100644 index 0000000..089ecef Binary files /dev/null and b/docs/images/DATA_TYPE.png differ diff --git a/docs/images/DBSCAN1.gif b/docs/images/DBSCAN1.gif new file mode 100644 index 0000000..9b5eb53 Binary files /dev/null and b/docs/images/DBSCAN1.gif differ diff --git a/docs/images/DBSCAN2.gif b/docs/images/DBSCAN2.gif new file mode 100644 index 0000000..8ac8f6e Binary files /dev/null and b/docs/images/DBSCAN2.gif differ diff --git a/docs/images/Hierarchical clustering.png b/docs/images/Hierarchical clustering.png new file mode 100644 index 0000000..e4b0a30 Binary files /dev/null and b/docs/images/Hierarchical clustering.png differ diff --git a/docs/images/ISODATA.gif b/docs/images/ISODATA.gif new file mode 100644 index 0000000..54ebd5f Binary files /dev/null and b/docs/images/ISODATA.gif differ diff --git a/docs/images/Interface_clust.png b/docs/images/Interface_clust.png new file mode 100644 index 0000000..c7feea5 Binary files /dev/null and b/docs/images/Interface_clust.png differ diff --git a/docs/images/K-means1.gif b/docs/images/K-means1.gif new file mode 100644 index 0000000..8a06038 Binary files /dev/null and b/docs/images/K-means1.gif differ diff --git a/docs/images/K-means2.png b/docs/images/K-means2.png new file mode 100644 index 0000000..c8c5324 Binary files /dev/null and b/docs/images/K-means2.png differ diff --git a/docs/images/K-means3.png b/docs/images/K-means3.png new file mode 100644 index 0000000..9a2de8c Binary files /dev/null and b/docs/images/K-means3.png differ diff --git a/docs/images/boston_dataset.png b/docs/images/boston_dataset.png new file mode 100644 index 0000000..2abfb7a Binary files /dev/null and b/docs/images/boston_dataset.png differ diff --git a/docs/images/clust_type.png b/docs/images/clust_type.png new file mode 100644 index 0000000..cff99dc Binary files /dev/null and b/docs/images/clust_type.png differ diff --git a/docs/images/cluster_lg.png b/docs/images/cluster_lg.png new file mode 100644 index 0000000..5f7919f Binary files /dev/null and b/docs/images/cluster_lg.png differ diff --git a/docs/images/connect_graph.png b/docs/images/connect_graph.png new file mode 100644 index 0000000..995fc73 Binary files /dev/null and b/docs/images/connect_graph.png differ diff --git a/docs/images/connect_map.png b/docs/images/connect_map.png new file mode 100644 index 0000000..e7382ab Binary files /dev/null and b/docs/images/connect_map.png differ diff --git a/docs/images/correlogram.png b/docs/images/correlogram.png new file mode 100644 index 0000000..e906c3d Binary files /dev/null and b/docs/images/correlogram.png differ diff --git a/docs/images/correlogram_2.png b/docs/images/correlogram_2.png new file mode 100644 index 0000000..dbfe1b6 Binary files /dev/null and b/docs/images/correlogram_2.png differ diff --git a/docs/images/econometrics.png b/docs/images/econometrics.png new file mode 100644 index 0000000..259fbea Binary files /dev/null and b/docs/images/econometrics.png differ diff --git a/docs/images/ex_3_1.png b/docs/images/ex_3_1.png new file mode 100644 index 0000000..21fe43e Binary files /dev/null and b/docs/images/ex_3_1.png differ diff --git a/docs/images/ex_3_10.png b/docs/images/ex_3_10.png new file mode 100644 index 0000000..fbfa3a0 Binary files /dev/null and b/docs/images/ex_3_10.png differ diff --git a/docs/images/ex_3_11.png b/docs/images/ex_3_11.png new file mode 100644 index 0000000..278bc1f Binary files /dev/null and b/docs/images/ex_3_11.png differ diff --git a/docs/images/ex_3_2.png b/docs/images/ex_3_2.png new file mode 100644 index 0000000..cb926a7 Binary files /dev/null and b/docs/images/ex_3_2.png differ diff --git a/docs/images/ex_3_3.png b/docs/images/ex_3_3.png new file mode 100644 index 0000000..e9dbe8f Binary files /dev/null and b/docs/images/ex_3_3.png differ diff --git a/docs/images/ex_3_4.png b/docs/images/ex_3_4.png new file mode 100644 index 0000000..e6c8f9a Binary files /dev/null and b/docs/images/ex_3_4.png differ diff --git a/docs/images/ex_3_5.png b/docs/images/ex_3_5.png new file mode 100644 index 0000000..c62a6fd Binary files /dev/null and b/docs/images/ex_3_5.png differ diff --git a/docs/images/ex_3_6.png b/docs/images/ex_3_6.png new file mode 100644 index 0000000..49078d3 Binary files /dev/null and b/docs/images/ex_3_6.png differ diff --git a/docs/images/ex_3_7.png b/docs/images/ex_3_7.png new file mode 100644 index 0000000..ffad60d Binary files /dev/null and b/docs/images/ex_3_7.png differ diff --git a/docs/images/ex_3_8.png b/docs/images/ex_3_8.png new file mode 100644 index 0000000..b017c54 Binary files /dev/null and b/docs/images/ex_3_8.png differ diff --git a/docs/images/ex_3_9.png b/docs/images/ex_3_9.png new file mode 100644 index 0000000..9525e81 Binary files /dev/null and b/docs/images/ex_3_9.png differ diff --git a/docs/images/glob_moran_bi1.png b/docs/images/glob_moran_bi1.png new file mode 100644 index 0000000..4f270c4 Binary files /dev/null and b/docs/images/glob_moran_bi1.png differ diff --git a/docs/images/glob_moran_bi2.png b/docs/images/glob_moran_bi2.png new file mode 100644 index 0000000..9946790 Binary files /dev/null and b/docs/images/glob_moran_bi2.png differ diff --git a/docs/images/glob_moran_uni1.png b/docs/images/glob_moran_uni1.png new file mode 100644 index 0000000..265e5fc Binary files /dev/null and b/docs/images/glob_moran_uni1.png differ diff --git a/docs/images/glob_moran_uni2.png b/docs/images/glob_moran_uni2.png new file mode 100644 index 0000000..dc24f18 Binary files /dev/null and b/docs/images/glob_moran_uni2.png differ diff --git a/docs/images/hist.png b/docs/images/hist.png new file mode 100644 index 0000000..6730cd0 Binary files /dev/null and b/docs/images/hist.png differ diff --git a/docs/images/jc_map.png b/docs/images/jc_map.png new file mode 100644 index 0000000..704dfe7 Binary files /dev/null and b/docs/images/jc_map.png differ diff --git a/docs/images/lisa_quant.png b/docs/images/lisa_quant.png new file mode 100644 index 0000000..e275db6 Binary files /dev/null and b/docs/images/lisa_quant.png differ diff --git a/docs/images/lisa_signmap.png b/docs/images/lisa_signmap.png new file mode 100644 index 0000000..d935ef3 Binary files /dev/null and b/docs/images/lisa_signmap.png differ diff --git a/docs/images/loc_moran_uni2.png b/docs/images/loc_moran_uni2.png new file mode 100644 index 0000000..0bc5998 Binary files /dev/null and b/docs/images/loc_moran_uni2.png differ diff --git a/docs/images/loc_moran_uni3.png b/docs/images/loc_moran_uni3.png new file mode 100644 index 0000000..c49128e Binary files /dev/null and b/docs/images/loc_moran_uni3.png differ diff --git a/docs/images/loc_moran_uni4.png b/docs/images/loc_moran_uni4.png new file mode 100644 index 0000000..678f2be Binary files /dev/null and b/docs/images/loc_moran_uni4.png differ diff --git a/docs/images/photo_cluster.png b/docs/images/photo_cluster.png new file mode 100644 index 0000000..ea7b878 Binary files /dev/null and b/docs/images/photo_cluster.png differ diff --git a/docs/images/pickpoint_taxi.png b/docs/images/pickpoint_taxi.png new file mode 100644 index 0000000..2d7517b Binary files /dev/null and b/docs/images/pickpoint_taxi.png differ diff --git a/docs/images/regression1.png b/docs/images/regression1.png new file mode 100644 index 0000000..41df48f Binary files /dev/null and b/docs/images/regression1.png differ diff --git a/docs/images/regression2.png b/docs/images/regression2.png new file mode 100644 index 0000000..9737ec9 Binary files /dev/null and b/docs/images/regression2.png differ diff --git a/docs/images/sign_lg.png b/docs/images/sign_lg.png new file mode 100644 index 0000000..5a9bb0b Binary files /dev/null and b/docs/images/sign_lg.png differ diff --git a/docs/images/weight_matrix_hotbar.png b/docs/images/weight_matrix_hotbar.png new file mode 100644 index 0000000..27690a6 Binary files /dev/null and b/docs/images/weight_matrix_hotbar.png differ diff --git a/docs/images/weight_matrix_hotbar2.png b/docs/images/weight_matrix_hotbar2.png new file mode 100644 index 0000000..cac4289 Binary files /dev/null and b/docs/images/weight_matrix_hotbar2.png differ diff --git a/docs/images/weight_matrix_hotbar3.png b/docs/images/weight_matrix_hotbar3.png new file mode 100644 index 0000000..4d0fcf0 Binary files /dev/null and b/docs/images/weight_matrix_hotbar3.png differ diff --git a/docs/images/weight_table.png b/docs/images/weight_table.png new file mode 100644 index 0000000..66744e6 Binary files /dev/null and b/docs/images/weight_table.png differ diff --git a/docs/images/weights_JC.png b/docs/images/weights_JC.png new file mode 100644 index 0000000..c514b57 Binary files /dev/null and b/docs/images/weights_JC.png differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..92f98fb --- /dev/null +++ b/docs/index.html @@ -0,0 +1,132 @@ + + + + + + +Chapter 1 About | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+1 About +

+

This is a course

+ +
+
+ +
+
+ + + + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e15c301 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,22 @@ +--- +title: "GeoDa course" +author: "Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V." +date: "2023-12-27" +site: bookdown::bookdown_site +documentclass: book +bibliography: [book.bib, packages.bib] +# url: your book url like https://bookdown.org/yihui/bookdown +# cover-image: path to the social sharing image like images/cover.jpg +description: | + This is a minimal example of using the bookdown package to write a book. + The HTML output format for this example is bookdown::bs4_book, + set in the _output.yml file. +biblio-style: apalike +csl: chicago-fullnote-bibliography.csl +--- + +# About + +This is a course + + diff --git a/docs/libs/anchor-sections-1.1.0/anchor-sections-hash.css b/docs/libs/anchor-sections-1.1.0/anchor-sections-hash.css new file mode 100644 index 0000000..b563ec9 --- /dev/null +++ b/docs/libs/anchor-sections-1.1.0/anchor-sections-hash.css @@ -0,0 +1,2 @@ +/* Styles for section anchors */ +a.anchor-section::before {content: '#';font-size: 80%;} diff --git a/docs/libs/anchor-sections-1.1.0/anchor-sections.css b/docs/libs/anchor-sections-1.1.0/anchor-sections.css new file mode 100644 index 0000000..041905f --- /dev/null +++ b/docs/libs/anchor-sections-1.1.0/anchor-sections.css @@ -0,0 +1,4 @@ +/* Styles for section anchors */ +a.anchor-section {margin-left: 10px; visibility: hidden; color: inherit;} +.hasAnchor:hover a.anchor-section {visibility: visible;} +ul > li > .anchor-section {display: none;} diff --git a/docs/libs/anchor-sections-1.1.0/anchor-sections.js b/docs/libs/anchor-sections-1.1.0/anchor-sections.js new file mode 100644 index 0000000..fee005d --- /dev/null +++ b/docs/libs/anchor-sections-1.1.0/anchor-sections.js @@ -0,0 +1,11 @@ +document.addEventListener('DOMContentLoaded', function () { + // If section divs is used, we need to put the anchor in the child header + const headers = document.querySelectorAll("div.hasAnchor.section[class*='level'] > :first-child") + + headers.forEach(function (x) { + // Add to the header node + if (!x.classList.contains('hasAnchor')) x.classList.add('hasAnchor') + // Remove from the section or div created by Pandoc + x.parentElement.classList.remove('hasAnchor') + }) +}) diff --git a/docs/libs/bootstrap-4.6.0/bootstrap.bundle.min.js b/docs/libs/bootstrap-4.6.0/bootstrap.bundle.min.js new file mode 100644 index 0000000..a9eb3db --- /dev/null +++ b/docs/libs/bootstrap-4.6.0/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};l.jQueryDetection(),i.default.fn.emulateTransitionEnd=s,i.default.event.special[l.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f=i.default.fn[u],d=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=l.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=l.getTransitionDurationFromElement(t);i.default(t).one(l.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.alert");o||(o=new t(this),n.data("bs.alert",o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',d._handleDismiss(new d)),i.default.fn[u]=d._jQueryInterface,i.default.fn[u].Constructor=d,i.default.fn[u].noConflict=function(){return i.default.fn[u]=f,d._jQueryInterface};var c=i.default.fn.button,h=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector('input:not([type="hidden"])');if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass("active")}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&i.default(this._element).toggleClass("active"))},e.dispose=function(){i.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data("bs.button");r||(r=new t(this),o.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector('input:not([type="hidden"])');if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||h._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=i.default(t.target).closest(".btn")[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(l.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?"next":"prev";this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(m),i.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},v,t),l.typeCheckConfig(p,t,_),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass("active")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(".active.carousel-item");if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(".active.carousel-item"),u=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event("slid.bs.carousel",{relatedTarget:f,direction:r,from:u,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),l.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=l.getTransitionDurationFromElement(s);i.default(s).one(l.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass("active"),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass("active"),i.default(f).addClass("active"),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.carousel"),o=a({},v,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=l.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data("bs.carousel").to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return v}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",y._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!this._isTransitioning&&!i.default(this._element).hasClass("show")&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains("collapse")}))).length&&(e=null),!(e&&(n=i.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data("bs.collapse",null));var a=this._getDimension();i.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),u=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(){i.default(o._element).removeClass("collapsing").addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(u),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass("show")){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",l.reflow(this._element),i.default(this._element).addClass("collapsing").removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}();var k=N&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),D))}};function A(t){return t&&"[object Function]"==={}.toString.call(t)}function I(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function O(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function x(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=I(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:x(O(t))}function j(t){return t&&t.referenceNode?t.referenceNode:t}var L=N&&!(!window.MSInputMethodContext||!document.documentMode),P=N&&/MSIE 10/.test(navigator.userAgent);function F(t){return 11===t?L:10===t?P:L||P}function R(t){if(!t)return document.documentElement;for(var e=F(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===I(n,"position")?R(n):n:t?t.ownerDocument.documentElement:document.documentElement}function H(t){return null!==t.parentNode?H(t.parentNode):t}function M(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&R(a.firstElementChild)!==a?R(l):l;var u=H(t);return u.host?M(u.host,e):M(t,H(e).host)}function q(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function B(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=q(e,"top"),o=q(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function Q(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function W(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],F(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function U(t){var e=t.body,n=t.documentElement,i=F(10)&&getComputedStyle(n);return{height:W("Height",e,n,i),width:W("Width",e,n,i)}}var V=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Y=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=F(10),o="HTML"===e.nodeName,r=G(t),a=G(e),s=x(t),l=I(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=K({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=B(d,e)),d}function J(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=$(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:q(n),s=e?0:q(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return K(l)}function Z(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===I(t,"position"))return!0;var n=O(t);return!!n&&Z(n)}function tt(t){if(!t||!t.parentElement||F())return document.documentElement;for(var e=t.parentElement;e&&"none"===I(e,"transform");)e=e.parentElement;return e||document.documentElement}function et(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?tt(t):M(t,j(e));if("viewport"===i)r=J(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=x(O(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=$(s,a,o);if("HTML"!==s.nodeName||Z(a))r=l;else{var u=U(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function nt(t){return t.width*t.height}function it(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=et(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return X({key:t},s[t],{area:nt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function ot(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?tt(e):M(e,j(n));return $(n,o,i)}function rt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function at(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function st(t,e,n){n=n.split("-")[0];var i=rt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[at(s)],o}function lt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ut(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=lt(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&A(n)&&(e.offsets.popper=K(e.offsets.popper),e.offsets.reference=K(e.offsets.reference),e=n(e,t))})),e}function ft(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ot(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=it(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=st(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ut(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function dt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function ct(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Tt.indexOf(t),i=Tt.slice(n+1).concat(Tt.slice(0,n));return e?i.reverse():i}var St="flip",Nt="clockwise",Dt="counterclockwise";function kt(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(lt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return K(s)[e]/100*r}if("vh"===a||"vw"===a)return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){_t(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var At={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:z({},l,r[l]),end:z({},l,r[l]+r[u]-a[u])};t.offsets.popper=X({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=_t(+n)?[+n,0]:kt(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||R(t.instance.popper);t.instance.reference===n&&(n=R(n));var i=ct("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=et(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),z({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=X({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!wt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=rt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=K(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=I(t.instance.popper),v=parseFloat(g["margin"+f]),_=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-v-_;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(z(n={},d,Math.round(b)),z(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(dt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=et(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=at(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case St:a=[i,o];break;case Nt:a=Ct(i);break;case Dt:a=Ct(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=at(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=X({},t.offsets.popper,st(t.instance.popper,t.offsets.reference,t.placement)),t=ut(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=at(e),t.offsets.popper=K(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!wt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=lt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};V(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=k(this.update.bind(this)),this.options=X({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(X({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=X({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return X({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&A(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Y(t,[{key:"update",value:function(){return ft.call(this)}},{key:"destroy",value:function(){return ht.call(this)}},{key:"enableEventListeners",value:function(){return gt.call(this)}},{key:"disableEventListeners",value:function(){return vt.call(this)}}]),t}();It.Utils=("undefined"!=typeof window?window:global).PopperUtils,It.placements=Et,It.Defaults=At;var Ot="dropdown",xt=i.default.fn[Ot],jt=new RegExp("38|40|27"),Lt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},Pt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},Ft=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")){var e=i.default(this._menu).hasClass("show");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass("disabled")||i.default(this._menu).hasClass("show"))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof It)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:l.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new It(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass("show"),i.default(r).toggleClass("show").trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")&&i.default(this._menu).hasClass("show")){var e={relatedTarget:this._element},n=i.default.Event("hide.bs.dropdown",e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass("show"),i.default(o).toggleClass("show").trigger(i.default.Event("hidden.bs.dropdown",e)))}},e.dispose=function(){i.default.removeData(this._element,"bs.dropdown"),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),l.typeCheckConfig(Ot,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(".dropdown-menu"))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass("dropdown-menu-right")?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass("dropdown-menu-right")&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data("bs.dropdown",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var o=l.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(l.TRANSITION_END),i.default(this._element).one(l.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||i.default(t._element).one(l.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass("fade"),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&l.reflow(this._element),i.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=l.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(l.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):i.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&l.reflow(this._backdrop),i.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var o=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass("fade")){var a=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:Qt,popperConfig:null},Zt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},te=function(){function t(t,e){if("undefined"==typeof It)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=l.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=l.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);this.addAttachmentClass(u);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new It(this.element,r,this._getPopperConfig(u)),i.default(r).addClass("show"),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(i.default(this.tip).hasClass("fade")){var c=l.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(l.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass("fade")){var a=l.getTransitionDurationFromElement(n);i.default(n).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Vt(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:l.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return $t[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),i.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Kt.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l.typeCheckConfig(Yt,t,this.constructor.DefaultType),t.sanitize&&(t.template=Vt(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Xt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tooltip"),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data("bs.tooltip",o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Jt}},{key:"NAME",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Zt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Gt}}]),t}();i.default.fn[Yt]=te._jQueryInterface,i.default.fn[Yt].Constructor=te,i.default.fn[Yt].noConflict=function(){return i.default.fn[Yt]=zt,te._jQueryInterface};var ee="popover",ne=i.default.fn[ee],ie=new RegExp("(^|\\s)bs-popover\\S+","g"),oe=a({},te.Default,{placement:"right",trigger:"click",content:"",template:''}),re=a({},te.DefaultType,{content:"(string|element|function)"}),ae={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},se=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(ie);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return oe}},{key:"NAME",get:function(){return ee}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return ae}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return re}}]),o}(te);i.default.fn[ee]=se._jQueryInterface,i.default.fn[ee].Constructor=se,i.default.fn[ee].noConflict=function(){return i.default.fn[ee]=ne,se._jQueryInterface};var le="scrollspy",ue=i.default.fn[le],fe={offset:10,method:"auto",target:""},de={offset:"number",method:"string",target:"(string|element)"},ce=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,o="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=l.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,"bs.scrollspy"),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},fe,"object"==typeof t&&t?t:{})).target&&l.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=l.getUID(le),i.default(t.target).attr("id",e)),t.target="#"+e}return l.typeCheckConfig(le,t,de),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),u=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(u),!u.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(".active"):i.default(e).find("> li > .active"))[0],a=n&&r&&i.default(r).hasClass("fade"),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var u=l.getTransitionDurationFromElement(r);i.default(r).removeClass("show").one(l.TRANSITION_END,s).emulateTransitionEnd(u)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass("active");var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),l.reflow(t),t.classList.contains("fade")&&t.classList.add("show");var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tab");if(o||(o=new t(this),n.data("bs.tab",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),pe._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=pe._jQueryInterface,i.default.fn.tab.Constructor=pe,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=he,pe._jQueryInterface};var me=i.default.fn.toast,ge={animation:"boolean",autohide:"boolean",delay:"number"},ve={animation:!0,autohide:!0,delay:500},_e=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),l.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),i.default(this._element).off("click.dismiss.bs.toast"),i.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},ve,i.default(this._element).data(),"object"==typeof t&&t?t:{}),l.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.toast");if(o||(o=new t(this,"object"==typeof e&&e),n.data("bs.toast",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"DefaultType",get:function(){return ge}},{key:"Default",get:function(){return ve}}]),t}();i.default.fn.toast=_e._jQueryInterface,i.default.fn.toast.Constructor=_e,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=me,_e._jQueryInterface},t.Alert=d,t.Button=h,t.Carousel=y,t.Collapse=S,t.Dropdown=Ft,t.Modal=qt,t.Popover=se,t.Scrollspy=ce,t.Tab=pe,t.Toast=_e,t.Tooltip=te,t.Util=l,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/libs/bootstrap-4.6.0/bootstrap.min.css b/docs/libs/bootstrap-4.6.0/bootstrap.min.css new file mode 100644 index 0000000..ab122c4 --- /dev/null +++ b/docs/libs/bootstrap-4.6.0/bootstrap.min.css @@ -0,0 +1 @@ +:root{--bslib-bootstrap-version: 4;--bslib-preset-name: ;--bslib-preset-type: }:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--default: #dee2e6;--primary: #096B72;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#096B72;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:transparent}a:hover{color:#03282b;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#000;background-color:#f6f6f6;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#000;background-color:#f6f6f6;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal;padding:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,0.075)}.table-default,.table-default>th,.table-default>td{background-color:#f6f7f8}.table-default th,.table-default td,.table-default thead th,.table-default tbody+tbody{border-color:#eef0f2}.table-hover .table-default:hover{background-color:#e8eaed}.table-hover .table-default:hover>td,.table-hover .table-default:hover>th{background-color:#e8eaed}.table-primary,.table-primary>th,.table-primary>td{background-color:#bad6d8}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#7fb2b6}.table-hover .table-primary:hover{background-color:#aacccf}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#aacccf}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark th,.table-dark td,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#12dae8;outline:0;box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text,.help-text,.help-block{display:block;margin-top:.25rem}.form-row{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check,.shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .radio,.shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .radio{position:relative;display:block;padding-left:1.25rem}.form-check-input,.shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .radio label>input,.shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .radio label>input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input[disabled]~.form-check-label,.shiny-input-checkboxgroup .radio label>input[disabled]~.form-check-label,.shiny-input-radiogroup .checkbox label>input[disabled]~.form-check-label,.shiny-input-radiogroup .radio label>input[disabled]~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input[disabled]~label,.shiny-input-checkboxgroup .checkbox label>input[disabled]~label,.shiny-input-checkboxgroup .radio .form-check-input[disabled]~label,.shiny-input-checkboxgroup .radio label>input[disabled]~label,.shiny-input-radiogroup .checkbox .form-check-input[disabled]~label,.shiny-input-radiogroup .checkbox label>input[disabled]~label,.shiny-input-radiogroup .radio .form-check-input[disabled]~label,.shiny-input-radiogroup .radio label>input[disabled]~label,.form-check-input:disabled~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input:disabled~.form-check-label,.shiny-input-checkboxgroup .radio label>input:disabled~.form-check-label,.shiny-input-radiogroup .checkbox label>input:disabled~.form-check-label,.shiny-input-radiogroup .radio label>input:disabled~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input:disabled~label,.shiny-input-checkboxgroup .checkbox label>input:disabled~label,.shiny-input-checkboxgroup .radio .form-check-input:disabled~label,.shiny-input-checkboxgroup .radio label>input:disabled~label,.shiny-input-radiogroup .checkbox .form-check-input:disabled~label,.shiny-input-radiogroup .checkbox label>input:disabled~label,.shiny-input-radiogroup .radio .form-check-input:disabled~label,.shiny-input-radiogroup .radio label>input:disabled~label{color:#6c757d}.form-check-label,.shiny-input-checkboxgroup .checkbox label,.shiny-input-checkboxgroup .radio label,.shiny-input-radiogroup .checkbox label,.shiny-input-radiogroup .radio label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;-webkit-align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input,.form-check-inline .shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .checkbox .form-check-inline label>input,.form-check-inline .shiny-input-checkboxgroup .radio label>input,.shiny-input-checkboxgroup .radio .form-check-inline label>input,.form-check-inline .shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .checkbox .form-check-inline label>input,.form-check-inline .shiny-input-radiogroup .radio label>input,.shiny-input-radiogroup .radio .form-check-inline label>input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,0.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*="col-"]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-check-input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.form-check-label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.form-check-label,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.form-check-label,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-radiogroup .radio label>input:valid~.form-check-label,.shiny-input-radiogroup .radio .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox .form-check-input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .form-check-input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .form-check-input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .form-check-input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .form-check-input:valid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .form-check-input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .radio label>input:valid~label,.shiny-input-radiogroup .radio .checkbox .was-validated label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .form-check-input:valid~label,.was-validated .shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .form-check-input:valid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .radio .was-validated label>input:valid~label,.form-check-input.is-valid~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.form-check-label,.shiny-input-checkboxgroup .radio label>input.is-valid~.form-check-label,.shiny-input-radiogroup .checkbox label>input.is-valid~.form-check-label,.shiny-input-radiogroup .radio label>input.is-valid~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input.is-valid~label,.shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .radio .form-check-input.is-valid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-radiogroup .checkbox .form-check-input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-valid~label,.shiny-input-radiogroup .radio .form-check-input.is-valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-valid~label,.shiny-input-radiogroup .radio label>input.is-valid~label{color:#28a745}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.valid-feedback,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.valid-feedback,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.valid-feedback,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-radiogroup .radio label>input:valid~.valid-feedback,.shiny-input-radiogroup .radio .was-validated label>input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.valid-tooltip,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.valid-tooltip,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.valid-tooltip,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-radiogroup .radio label>input:valid~.valid-tooltip,.shiny-input-radiogroup .radio .was-validated label>input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.valid-feedback,.shiny-input-checkboxgroup .radio label>input.is-valid~.valid-feedback,.shiny-input-radiogroup .checkbox label>input.is-valid~.valid-feedback,.shiny-input-radiogroup .radio label>input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.valid-tooltip,.shiny-input-checkboxgroup .radio label>input.is-valid~.valid-tooltip,.shiny-input-radiogroup .checkbox label>input.is-valid~.valid-tooltip,.shiny-input-radiogroup .radio label>input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#28a745}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#28a745}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*="col-"]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.form-check-label,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.form-check-label,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.form-check-label,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox .form-check-input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .form-check-input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .form-check-input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .form-check-input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .form-check-input:invalid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .form-check-input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .radio label>input:invalid~label,.shiny-input-radiogroup .radio .checkbox .was-validated label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .form-check-input:invalid~label,.was-validated .shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .form-check-input:invalid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.form-check-input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .radio label>input.is-invalid~.form-check-label,.shiny-input-radiogroup .checkbox label>input.is-invalid~.form-check-label,.shiny-input-radiogroup .radio label>input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input.is-invalid~label,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .form-check-input.is-invalid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .form-check-input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .radio .form-check-input.is-invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio label>input.is-invalid~label{color:#dc3545}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.invalid-feedback,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.invalid-feedback,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.invalid-feedback,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.invalid-feedback,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.invalid-tooltip,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.invalid-tooltip,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.invalid-tooltip,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.invalid-tooltip,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.invalid-feedback,.shiny-input-checkboxgroup .radio label>input.is-invalid~.invalid-feedback,.shiny-input-radiogroup .checkbox label>input.is-invalid~.invalid-feedback,.shiny-input-radiogroup .radio label>input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.invalid-tooltip,.shiny-input-checkboxgroup .radio label>input.is-invalid~.invalid-tooltip,.shiny-input-radiogroup .checkbox label>input.is-invalid~.invalid-tooltip,.shiny-input-radiogroup .radio label>input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap;align-items:center;-webkit-align-items:center}.form-inline .form-check,.form-inline .shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .form-inline .checkbox,.form-inline .shiny-input-checkboxgroup .radio,.shiny-input-checkboxgroup .form-inline .radio,.form-inline .shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .form-inline .checkbox,.form-inline .shiny-input-radiogroup .radio,.shiny-input-radiogroup .form-inline .radio{width:100%}@media (min-width: 576px){.form-inline label{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;display:-webkit-flex;flex:0 0 auto;-webkit-flex:0 0 auto;flex-flow:row wrap;-webkit-flex-flow:row wrap;align-items:center;-webkit-align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check,.form-inline .shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .form-inline .checkbox,.form-inline .shiny-input-checkboxgroup .radio,.shiny-input-checkboxgroup .form-inline .radio,.form-inline .shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .form-inline .checkbox,.form-inline .shiny-input-radiogroup .radio,.shiny-input-radiogroup .form-inline .radio{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input,.form-inline .shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .checkbox .form-inline label>input,.form-inline .shiny-input-checkboxgroup .radio label>input,.shiny-input-checkboxgroup .radio .form-inline label>input,.form-inline .shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .checkbox .form-inline label>input,.form-inline .shiny-input-radiogroup .radio label>input,.shiny-input-radiogroup .radio .form-inline label>input{position:relative;flex-shrink:0;-webkit-flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-default{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-default:hover{color:#000;background-color:#c8cfd6;border-color:#c1c9d0}.btn-default:focus,.btn-default.focus{color:#000;background-color:#c8cfd6;border-color:#c1c9d0;box-shadow:0 0 0 .2rem rgba(189,192,196,0.5)}.btn-default.disabled,.btn-default:disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-default:not(:disabled):not(.disabled):active,.btn-default:not(:disabled):not(.disabled).active,.show>.btn-default.dropdown-toggle,.in>.btn-default.dropdown-toggle{color:#000;background-color:#c1c9d0;border-color:#bac2cb}.btn-default:not(:disabled):not(.disabled):active:focus,.btn-default:not(:disabled):not(.disabled).active:focus,.show>.btn-default.dropdown-toggle:focus,.in>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(189,192,196,0.5)}.btn-primary{color:#fff;background-color:#096B72;border-color:#096B72}.btn-primary:hover{color:#fff;background-color:#064a4f;border-color:#053f43}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#064a4f;border-color:#053f43;box-shadow:0 0 0 .2rem rgba(46,129,135,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#096B72;border-color:#096B72}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle,.in>.btn-primary.dropdown-toggle{color:#fff;background-color:#053f43;border-color:#043437}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus,.in>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(46,129,135,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle,.in>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus,.in>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle,.in>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus,.in>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle,.in>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus,.in>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#000;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(217,164,6,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle,.in>.btn-warning.dropdown-toggle{color:#000;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus,.in>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(217,164,6,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle,.in>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus,.in>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#000;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(211,212,213,0.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle,.in>.btn-light.dropdown-toggle{color:#000;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus,.in>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(211,212,213,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle,.in>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus,.in>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-outline-default{color:#dee2e6;border-color:#dee2e6;background-color:transparent}.btn-outline-default:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-outline-default:focus,.btn-outline-default.focus{box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.btn-outline-default.disabled,.btn-outline-default:disabled{color:#dee2e6;background-color:transparent}.btn-outline-default:not(:disabled):not(.disabled):active,.btn-outline-default:not(:disabled):not(.disabled).active,.show>.btn-outline-default.dropdown-toggle,.in>.btn-outline-default.dropdown-toggle{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-outline-default:not(:disabled):not(.disabled):active:focus,.btn-outline-default:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-default.dropdown-toggle:focus,.in>.btn-outline-default.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.btn-outline-primary{color:#096B72;border-color:#096B72;background-color:transparent}.btn-outline-primary:hover{color:#fff;background-color:#096B72;border-color:#096B72}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(9,107,114,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#096B72;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle,.in>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#096B72;border-color:#096B72}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus,.in>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(9,107,114,0.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;background-color:transparent}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle,.in>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus,.in>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;border-color:#28a745;background-color:transparent}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle,.in>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus,.in>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8;background-color:transparent}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle,.in>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus,.in>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107;background-color:transparent}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle,.in>.btn-outline-warning.dropdown-toggle{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus,.in>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545;background-color:transparent}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle,.in>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus,.in>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;background-color:transparent}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle,.in>.btn-outline-light.dropdown-toggle{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus,.in>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;border-color:#343a40;background-color:transparent}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle,.in>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus,.in>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#096B72;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none}.btn-link:hover{color:#03282b;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show):not(.in){opacity:0}.collapse:not(.show):not(.in){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider,.dropdown-menu>li.divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item,.dropdown-menu>li>a{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-menu>li>a:hover,.dropdown-item:focus,.dropdown-menu>li>a:focus{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-menu>li>a.active,.dropdown-item:active,.dropdown-menu>li>a:active{color:#fff;text-decoration:none;background-color:#096B72}.dropdown-item.disabled,.dropdown-menu>li>a.disabled,.dropdown-item:disabled,.dropdown-menu>li>a:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show,.dropdown-menu.in{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.form-control:not(:last-child),.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.form-control:nth-last-child(n + 3),.input-group.has-validation>.custom-select:nth-last-child(n + 3),.input-group.has-validation>.custom-file:nth-last-child(n + 3) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-prepend,.input-group-append{display:flex;display:-webkit-flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact;-webkit-print-color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#096B72;background-color:#096B72}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#12dae8}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#000;background-color:#3ee4f0;border-color:#3ee4f0}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input[disabled]~.custom-control-label::before,.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50% / 50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#096B72;background-color:#096B72}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(9,107,114,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(9,107,114,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(9,107,114,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(9,107,114,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.custom-select:focus{border-color:#12dae8;outline:0;box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#12dae8;box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.custom-file-input[disabled]~.custom-file-label,.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(9,107,114,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(9,107,114,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(9,107,114,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#096B72;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#3ee4f0}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#096B72;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#3ee4f0}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#096B72;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#3ee4f0}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link,.nav-tabs>li>a,.nav-pills>li>a,:where(ul.nav.navbar-nav > li)>a{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-tabs>li>a:hover,.nav-pills>li>a:hover,:where(ul.nav.navbar-nav > li)>a:hover,.nav-link:focus,.nav-tabs>li>a:focus,.nav-pills>li>a:focus,:where(ul.nav.navbar-nav > li)>a:focus{text-decoration:none}.nav-link.disabled,.nav-tabs>li>a.disabled,.nav-pills>li>a.disabled,:where(ul.nav.navbar-nav > li)>a.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link,.nav-tabs>li>a,.nav-tabs .nav-pills>li>a,.nav-tabs :where(ul.nav.navbar-nav > li)>a{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs>li>a:hover,.nav-tabs .nav-pills>li>a:hover,.nav-tabs :where(ul.nav.navbar-nav > li)>a:hover,.nav-tabs .nav-link:focus,.nav-tabs>li>a:focus,.nav-tabs .nav-pills>li>a:focus,.nav-tabs :where(ul.nav.navbar-nav > li)>a:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled,.nav-tabs>li>a.disabled,.nav-tabs .nav-pills>li>a.disabled,.nav-tabs :where(ul.nav.navbar-nav > li)>a.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs>li>a.active,.nav-tabs .nav-pills>li>a.active,.nav-tabs :where(ul.nav.navbar-nav > li)>a.active,.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.in .nav-link,.nav-tabs .nav-item.show .nav-tabs>li>a,.nav-tabs .nav-item.in .nav-tabs>li>a,.nav-tabs .nav-item.show .nav-pills>li>a,.nav-tabs .nav-item.in .nav-pills>li>a,.nav-tabs>li.show .nav-link,.nav-tabs>li.in .nav-link,.nav-tabs>li.show .nav-tabs>li>a,.nav-tabs>li.in .nav-tabs>li>a,.nav-tabs>li.show .nav-pills>li>a,.nav-tabs>li.in .nav-pills>li>a,.nav-tabs .nav-pills>li.show .nav-link,.nav-tabs .nav-pills>li.in .nav-link,.nav-tabs .nav-pills>li.show .nav-tabs>li>a,.nav-tabs .nav-pills>li.in .nav-tabs>li>a,.nav-tabs .nav-pills>li.show .nav-pills>li>a,.nav-tabs .nav-pills>li.in .nav-pills>li>a,.nav-tabs .nav-item.show :where(ul.nav.navbar-nav > li)>a,.nav-tabs .nav-item.in :where(ul.nav.navbar-nav > li)>a,.nav-tabs>li.show :where(ul.nav.navbar-nav > li)>a,.nav-tabs>li.in :where(ul.nav.navbar-nav > li)>a,.nav-tabs .nav-pills>li.show :where(ul.nav.navbar-nav > li)>a,.nav-tabs .nav-pills>li.in :where(ul.nav.navbar-nav > li)>a,.nav-tabs .show:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-link,.nav-tabs .in:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-link,.nav-tabs .show:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-tabs>li>a,.nav-tabs .in:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-tabs>li>a,.nav-tabs .show:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-pills>li>a,.nav-tabs .in:where(ul.nav.navbar-nav > li):not(.dropdown) .nav-pills>li>a,.nav-tabs .show:where(ul.nav.navbar-nav > li):not(.dropdown) :where(ul.nav.navbar-nav > li)>a,.nav-tabs .in:where(ul.nav.navbar-nav > li):not(.dropdown) :where(ul.nav.navbar-nav > li)>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link,.nav-pills .nav-tabs>li>a,.nav-pills>li>a,.nav-pills :where(ul.nav.navbar-nav > li)>a{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .nav-tabs>li>a.active,.nav-pills>li>a.active,.nav-pills :where(ul.nav.navbar-nav > li)>a.active,.nav-pills .show>.nav-link,.nav-pills .in>.nav-link,.nav-pills .nav-tabs>li.show>a,.nav-pills .nav-tabs>li.in>a,.nav-pills>li.show>a,.nav-pills>li.in>a,.nav-pills .show:where(ul.nav.navbar-nav > li)>a,.nav-pills .in:where(ul.nav.navbar-nav > li)>a{color:#fff;background-color:#096B72}.nav-fill>.nav-link,.nav-tabs>li.nav-fill>a,.nav-pills>li.nav-fill>a,.nav-fill:where(ul.nav.navbar-nav > li)>a,.nav-fill .nav-item,.nav-fill .nav-tabs>li,.nav-fill .nav-pills>li,.nav-fill :where(ul.nav.navbar-nav > li):not(.dropdown){flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-tabs>li.nav-justified>a,.nav-pills>li.nav-justified>a,.nav-justified:where(ul.nav.navbar-nav > li)>a,.nav-justified .nav-item,.nav-justified .nav-tabs>li,.nav-justified .nav-pills>li,.nav-justified :where(ul.nav.navbar-nav > li):not(.dropdown){flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link,.navbar-nav .nav-tabs>li>a,.navbar-nav .nav-pills>li>a,.navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler,.navbar-toggle{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggle:hover,.navbar-toggler:focus,.navbar-toggle:focus{text-decoration:none}.navbar-toggler-icon,.navbar-toggle>.icon-bar:last-child{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50% / 100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container,.navbar-expand-sm>.container-fluid,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-fluid,.navbar-expand-sm>.container-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-sm,.navbar-expand-sm>.container-md,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-md,.navbar-expand-sm>.container-lg,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-lg,.navbar-expand-sm>.container-xl,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl){flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .nav-tabs>li>a,.navbar-expand-sm .navbar-nav .nav-pills>li>a,.navbar-expand-sm .navbar-nav :where(ul.nav.navbar-nav > li)>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-link,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-tabs>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-pills>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container,.navbar-expand-sm>.container-fluid,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-fluid,.navbar-expand-sm>.container-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-sm,.navbar-expand-sm>.container-md,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-md,.navbar-expand-sm>.container-lg,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-lg,.navbar-expand-sm>.container-xl,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .navbar-toggle,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggler,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggle{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .nav-tabs>li>a,.navbar-expand-md .navbar-nav .nav-pills>li>a,.navbar-expand-md .navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .navbar-toggle{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .nav-tabs>li>a,.navbar-expand-lg .navbar-nav .nav-pills>li>a,.navbar-expand-lg .navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .navbar-toggle{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .nav-tabs>li>a,.navbar-expand-xl .navbar-nav .nav-pills>li>a,.navbar-expand-xl .navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .navbar-toggle{display:none}}.navbar-expand{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .nav-tabs>li>a,.navbar-expand .navbar-nav .nav-pills>li>a,.navbar-expand .navbar-nav :where(ul.nav.navbar-nav > li)>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .navbar-toggle{display:none}.navbar-light,.navbar.navbar-default{background-color:#f8f9fa}.navbar-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:#000}.navbar-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover,.navbar-light .navbar-brand:focus,.navbar.navbar-default .navbar-brand:focus{color:#000}.navbar-light .navbar-nav .nav-link,.navbar-light .navbar-nav .nav-tabs>li>a,.navbar-light .navbar-nav .nav-pills>li>a,.navbar.navbar-default .navbar-nav .nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li>a,.navbar.navbar-default .navbar-nav .nav-pills>li>a,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-tabs>li>a:hover,.navbar-light .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-default .navbar-nav .nav-link:hover,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-default .navbar-nav .nav-pills>li>a:hover,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a:hover,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a:hover,.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-tabs>li>a:focus,.navbar-light .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-default .navbar-nav .nav-link:focus,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-default .navbar-nav .nav-pills>li>a:focus,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a:focus,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a:focus{color:rgba(0,0,0,0.75)}.navbar-light .navbar-nav .nav-link.disabled,.navbar-light .navbar-nav .nav-tabs>li>a.disabled,.navbar-light .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-link.disabled,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-pills>li>a.disabled,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a.disabled,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a.disabled{color:rgba(0,0,0,0.25)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .in>.nav-link,.navbar-light .navbar-nav .nav-tabs>li.show>a,.navbar-light .navbar-nav .nav-tabs>li.in>a,.navbar-light .navbar-nav .nav-pills>li.show>a,.navbar-light .navbar-nav .nav-pills>li.in>a,.navbar.navbar-default .navbar-nav .show>.nav-link,.navbar.navbar-default .navbar-nav .in>.nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-default .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-default .navbar-nav .nav-pills>li.show>a,.navbar.navbar-default .navbar-nav .nav-pills>li.in>a,.navbar-light .navbar-nav .show:where(ul.nav.navbar-nav > li)>a,.navbar-light .navbar-nav .in:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-default .navbar-nav .show:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-default .navbar-nav .in:where(ul.nav.navbar-nav > li)>a,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-tabs>li.active>a,.navbar-light .navbar-nav .nav-pills>li.active>a,.navbar.navbar-default .navbar-nav .active>.nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li.active>a,.navbar.navbar-default .navbar-nav .nav-pills>li.active>a,.navbar-light .navbar-nav .active:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-default .navbar-nav .active:where(ul.nav.navbar-nav > li)>a,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.in,.navbar-light .navbar-nav .nav-tabs>li>a.show,.navbar-light .navbar-nav .nav-tabs>li>a.in,.navbar-light .navbar-nav .nav-pills>li>a.show,.navbar-light .navbar-nav .nav-pills>li>a.in,.navbar.navbar-default .navbar-nav .nav-link.show,.navbar.navbar-default .navbar-nav .nav-link.in,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.show,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.in,.navbar.navbar-default .navbar-nav .nav-pills>li>a.show,.navbar.navbar-default .navbar-nav .nav-pills>li>a.in,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a.show,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a.in,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a.show,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a.in,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-tabs>li>a.active,.navbar-light .navbar-nav .nav-pills>li>a.active,.navbar.navbar-default .navbar-nav .nav-link.active,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-default .navbar-nav .nav-pills>li>a.active,.navbar-light .navbar-nav :where(ul.nav.navbar-nav > li)>a.active,.navbar.navbar-default .navbar-nav :where(ul.nav.navbar-nav > li)>a.active{color:#000}.navbar-light .navbar-toggler,.navbar-light .navbar-toggle,.navbar.navbar-default .navbar-toggler,.navbar.navbar-default .navbar-toggle{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon,.navbar-light .navbar-toggle>.icon-bar:last-child,.navbar.navbar-default .navbar-toggler-icon,.navbar.navbar-default .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text,.navbar.navbar-default .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a,.navbar.navbar-default .navbar-text a{color:#000}.navbar-light .navbar-text a:hover,.navbar.navbar-default .navbar-text a:hover,.navbar-light .navbar-text a:focus,.navbar.navbar-default .navbar-text a:focus{color:#000}.navbar-dark,.navbar.navbar-inverse{background-color:#343a40}.navbar-dark .navbar-brand,.navbar.navbar-inverse .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar.navbar-inverse .navbar-brand:hover,.navbar-dark .navbar-brand:focus,.navbar.navbar-inverse .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link,.navbar-dark .navbar-nav .nav-tabs>li>a,.navbar-dark .navbar-nav .nav-pills>li>a,.navbar.navbar-inverse .navbar-nav .nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-tabs>li>a:hover,.navbar-dark .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-link:hover,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:hover,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a:hover,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a:hover,.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-tabs>li>a:focus,.navbar-dark .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-link:focus,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:focus,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a:focus,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled,.navbar-dark .navbar-nav .nav-tabs>li>a.disabled,.navbar-dark .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-link.disabled,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.disabled,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a.disabled,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .in>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.show>a,.navbar-dark .navbar-nav .nav-tabs>li.in>a,.navbar-dark .navbar-nav .nav-pills>li.show>a,.navbar-dark .navbar-nav .nav-pills>li.in>a,.navbar.navbar-inverse .navbar-nav .show>.nav-link,.navbar.navbar-inverse .navbar-nav .in>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.in>a,.navbar-dark .navbar-nav .show:where(ul.nav.navbar-nav > li)>a,.navbar-dark .navbar-nav .in:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-inverse .navbar-nav .show:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-inverse .navbar-nav .in:where(ul.nav.navbar-nav > li)>a,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.active>a,.navbar-dark .navbar-nav .nav-pills>li.active>a,.navbar.navbar-inverse .navbar-nav .active>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.active>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.active>a,.navbar-dark .navbar-nav .active:where(ul.nav.navbar-nav > li)>a,.navbar.navbar-inverse .navbar-nav .active:where(ul.nav.navbar-nav > li)>a,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.in,.navbar-dark .navbar-nav .nav-tabs>li>a.show,.navbar-dark .navbar-nav .nav-tabs>li>a.in,.navbar-dark .navbar-nav .nav-pills>li>a.show,.navbar-dark .navbar-nav .nav-pills>li>a.in,.navbar.navbar-inverse .navbar-nav .nav-link.show,.navbar.navbar-inverse .navbar-nav .nav-link.in,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.show,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.in,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.show,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.in,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a.show,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a.in,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a.show,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a.in,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-tabs>li>a.active,.navbar-dark .navbar-nav .nav-pills>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-link.active,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.active,.navbar-dark .navbar-nav :where(ul.nav.navbar-nav > li)>a.active,.navbar.navbar-inverse .navbar-nav :where(ul.nav.navbar-nav > li)>a.active{color:#fff}.navbar-dark .navbar-toggler,.navbar-dark .navbar-toggle,.navbar.navbar-inverse .navbar-toggler,.navbar.navbar-inverse .navbar-toggle{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon,.navbar-dark .navbar-toggle>.icon-bar:last-child,.navbar.navbar-inverse .navbar-toggler-icon,.navbar.navbar-inverse .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text,.navbar.navbar-inverse .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a,.navbar.navbar-inverse .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar.navbar-inverse .navbar-text a:hover,.navbar-dark .navbar-text a:focus,.navbar.navbar-inverse .navbar-text a:focus{color:#fff}.card,.well{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr,.well>hr{margin-right:0;margin-left:0}.card>.list-group,.well>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,.well>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child,.well>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.well>.card-header+.list-group,.card>.list-group+.card-footer,.well>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;-webkit-flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck .well{margin-bottom:15px}@media (min-width: 576px){.card-deck{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck .well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>.well{margin-bottom:15px}@media (min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card,.card-group>.well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.well+.card,.card-group>.card+.well,.card-group>.well+.well{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>.well:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.well:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header,.card-group>.well:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.well:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer,.card-group>.well:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>.well:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.well:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header,.card-group>.well:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.well:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer,.card-group>.well:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card,.card-columns .well{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns .well{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card,.accordion>.well{overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>.well:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>.well:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>.well>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#096B72;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#03282b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(9,107,114,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#096B72;border-color:#096B72}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{color:#000;background-color:#dee2e6}a.badge-default:hover,a.badge-default:focus{color:#000;background-color:#c1c9d0}a.badge-default:focus,a.badge-default.focus{outline:0;box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.badge-primary{color:#fff;background-color:#096B72}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#053f43}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(9,107,114,0.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#545b62}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#1e7e34}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#117a8b}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.badge-warning{color:#000;background-color:#ffc107}a.badge-warning:hover,a.badge-warning:focus{color:#000;background-color:#d39e00}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#bd2130}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.badge-light{color:#000;background-color:#f8f9fa}a.badge-light:hover,a.badge-light:focus{color:#000;background-color:#dae0e5}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#1d2124}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-default{color:#737678;background-color:#f8f9fa;border-color:#f6f7f8}.alert-default hr{border-top-color:#e8eaed}.alert-default .alert-link{color:#5a5c5e}.alert-primary{color:#05383b;background-color:#cee1e3;border-color:#bad6d8}.alert-primary hr{border-top-color:#aacccf}.alert-primary .alert-link{color:#010b0c}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#096B72;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;display:-webkit-flex;align-items:flex-start;-webkit-align-items:flex-start}.media-body{flex:1;-webkit-flex:1}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#096B72;border-color:#096B72}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#737678;background-color:#f6f7f8}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#737678;background-color:#e8eaed}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#737678;border-color:#737678}.list-group-item-primary{color:#05383b;background-color:#bad6d8}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#05383b;background-color:#aacccf}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#05383b;border-color:#05383b}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;-webkit-flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show,.toast.in{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog,.modal.in .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;display:-webkit-flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0;-webkit-flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;height:-webkit-min-content;height:-moz-min-content;height:-ms-min-content;height:-o-min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show,.modal-backdrop.in{opacity:.5}.modal-header{display:flex;display:-webkit-flex;align-items:flex-start;-webkit-align-items:flex-start;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content;height:-webkit-min-content;height:-moz-min-content;height:-ms-min-content;height:-o-min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show,.tooltip.in{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:50% / 100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-default{background-color:#dee2e6 !important;color:#000}a.bg-default:hover,a.bg-default:focus,button.bg-default:hover,button.bg-default:focus{background-color:#c1c9d0 !important}.bg-primary{background-color:#096B72 !important;color:#fff}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#053f43 !important}.bg-secondary{background-color:#6c757d !important;color:#fff}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important;color:#fff}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important;color:#fff}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important;color:#000}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important;color:#fff}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important;color:#000}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important;color:#fff}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important;color:#000}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-default{border-color:#dee2e6 !important}.border-primary{border-color:#096B72 !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top,.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom,.navbar-fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top,.navbar-sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-default{color:#dee2e6 !important}a.text-default:hover,a.text-default:focus{color:#b2bcc5 !important}.text-primary{color:#096B72 !important}a.text-primary:hover,a.text-primary:focus{color:#03282b !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#19692c !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#0f6674 !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#121416 !important}.text-body{color:#212529 !important}.text-muted,.help-text,.help-block{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dee2e6 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.table th[align=left]{text-align:left}.table th[align=right]{text-align:right}.table th[align=center]{text-align:center}.well{display:block;background-color:rgba(0,0,0,0.03);color:#212529;padding:1.25rem;border-radius:.25rem}.well-lg{padding:1.5rem;border-radius:.3rem}.well-sm{padding:0.5rem;border-radius:.2rem}.draggable .well{background-color:#f7f7f7}.dropdown-menu>li.active>a{color:#fff;text-decoration:none;background-color:#096B72}.navbar .nav.nav-underline{--bs-navbar-nav-link-padding-x: 0}.navbar:not(.fixed-bottom):not(.navbar-fixed-bottom):not(.navbar-fixed-bottom)+div>.tab-content>.tab-pane{--bslib-navbar-margin: 20px;margin-top:var(--bslib-navbar-margin)}ul.nav.navbar-nav{flex:1;-webkit-flex:1}ul.nav.navbar-nav.navbar-right{flex:unset;-webkit-flex:unset;display:flex;display:-webkit-flex;justify-content:flex-end;-webkit-justify-content:flex-end}:where(ul.nav.navbar-nav > li).active>a,:where(ul.nav.navbar-nav > li).show>a,.in:where(ul.nav.navbar-nav > li)>a{color:var(--bs-navbar-active-color)}:where(ul.nav.navbar-nav > li).bslib-nav-item{color:var(--bs-navbar-active-color)}.navbar{--bslib-navbar-default-bg: #f8f9fa;--bslib-navbar-inverse-bg: #343a40}.navbar.navbar-default{background-color:var(--bslib-navbar-default-bg, var(--bs-light)) !important}.navbar.navbar-inverse{background-color:var(--bslib-navbar-inverse-bg, var(--bs-dark)) !important;--bs-emphasis-color: white;--bs-emphasis-color-rgb: 255, 255, 255}.navbar-toggle>.icon-bar{display:none}@media (max-width: 575.98px){.navbar-header{width:100%}.navbar-header .navbar-toggle{float:right}}.nav-tabs>li.active>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-pills>li.active>a{color:#fff;background-color:#096B72}.nav-stacked{flex-direction:column;-webkit-flex-direction:column}.progress-bar-default{background-color:#dee2e6;color:#000}.progress-bar-primary{background-color:#096B72;color:#fff}.progress-bar-secondary{background-color:#6c757d;color:#fff}.progress-bar-success{background-color:#28a745;color:#fff}.progress-bar-info{background-color:#17a2b8;color:#fff}.progress-bar-warning{background-color:#ffc107;color:#000}.progress-bar-danger{background-color:#dc3545;color:#fff}.progress-bar-light{background-color:#f8f9fa;color:#000}.progress-bar-dark{background-color:#343a40;color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url("fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}.form-group{margin-bottom:1rem}.shiny-input-checkboxgroup .checkbox-inline,.shiny-input-checkboxgroup .radio-inline,.shiny-input-radiogroup .checkbox-inline,.shiny-input-radiogroup .radio-inline{padding-left:0;margin-right:.75rem}.shiny-input-checkboxgroup .checkbox-inline label>input,.shiny-input-checkboxgroup .radio-inline label>input,.shiny-input-radiogroup .checkbox-inline label>input,.shiny-input-radiogroup .radio-inline label>input{margin-top:0;margin-right:.3125rem;margin-bottom:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append{padding:inherit;line-height:inherit;text-shadow:inherit;border-width:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append .input-group-text{border-radius:0}.shiny-input-checkboxgroup .checkbox-inline,.shiny-input-radiogroup .radio-inline{cursor:pointer}pre.shiny-code{padding:0.5rem}h1,h2,h3{margin-top:1.5rem}h4,h5,h6{margin-top:1rem}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0} diff --git a/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.eot b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.svg b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.ttf b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/docs/libs/bootstrap-4.6.0/fonts/bootstrap/glyphicons-halflings-regular.woff2 differ diff --git a/docs/libs/bs3compat-0.6.1/bs3compat.js b/docs/libs/bs3compat-0.6.1/bs3compat.js new file mode 100644 index 0000000..4f029dc --- /dev/null +++ b/docs/libs/bs3compat-0.6.1/bs3compat.js @@ -0,0 +1,48 @@ +// Inform the world that we have the ability to use BS3 nav/navbar markup in BS4 +window.BS3_COMPAT = true; + +// This logic needs to execute after both the BS4+ (new) as well as BS3 (legacy) +// jQuery plugins have been registered. For BS5, plugin registration happens +// after DOM content is loaded, which is why we do the same here. +// https://github.com/twbs/bootstrap/blob/08139c22/js/dist/tab.js#L87 +$(function() { + + // The legacy plugin needs to be registered after the new one + if (!$.fn.tab.Constructor.VERSION.match(/^3\./)) { + (console.warn || console.error || console.log)("bs3compat.js couldn't find bs3 tab impl; bs3 tabs will not be properly supported"); + return; + } + var legacyTabPlugin = $.fn.tab.noConflict(); + + if (!$.fn.tab || !$.fn.tab.Constructor || !$.fn.tab.noConflict) { + (console.warn || console.error || console.log)("bs3compat.js couldn't find a jQuery tab impl; bs3 tabs will not be properly supported"); + } + var newTabPlugin = $.fn.tab.noConflict(); + + // Re-define the tab click event + // https://github.com/twbs/bootstrap/blob/08139c2/js/src/tab.js#L33 + var EVENT_KEY = "click.bs.tab.data-api"; + $(document).off(EVENT_KEY); + + var SELECTOR = '[data-toggle="tab"], [data-toggle="pill"], [data-bs-toggle="tab"], [data-bs-toggle="pill"]'; + $(document).on(EVENT_KEY, SELECTOR, function(event) { + event.preventDefault(); + $(this).tab("show"); + }); + + function TabPlugin(config) { + // Legacy (bs3) tabs: li.active > a + // New (bs4+) tabs: li.nav-item > a.active.nav-link + var legacy = $(this).closest(".nav").find("li:not(.dropdown).active > a").length > 0; + var plugin = legacy ? legacyTabPlugin : newTabPlugin; + plugin.call($(this), config); + } + + var noconflict = $.fn.tab; + $.fn.tab = TabPlugin; + $.fn.tab.Constructor = newTabPlugin.Constructor; + $.fn.tab.noConflict = function() { + $.fn.tab = noconflict; + return TabPlugin; + }; +}); diff --git a/docs/libs/bs3compat-0.6.1/tabs.js b/docs/libs/bs3compat-0.6.1/tabs.js new file mode 100644 index 0000000..79825cc --- /dev/null +++ b/docs/libs/bs3compat-0.6.1/tabs.js @@ -0,0 +1,157 @@ +/* ======================================================================== + * Bootstrap: tab.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#tabs + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +// Register tab plugin after DOM content loaded in order to +// override BS5's plugin +// https://github.com/twbs/bootstrap/blob/08139c22/js/dist/tab.js#L87 +$(function() { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.4.1' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(document).find(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}); diff --git a/docs/libs/bs3compat-0.6.1/transition.js b/docs/libs/bs3compat-0.6.1/transition.js new file mode 100644 index 0000000..81e7122 --- /dev/null +++ b/docs/libs/bs3compat-0.6.1/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#transitions + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // https://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); diff --git a/docs/libs/bs4_book-1.0.0/bs4_book.css b/docs/libs/bs4_book-1.0.0/bs4_book.css new file mode 100644 index 0000000..0bc45a0 --- /dev/null +++ b/docs/libs/bs4_book-1.0.0/bs4_book.css @@ -0,0 +1,555 @@ +/* Page structure ---------------------------------------------------------- + ++-----+-----------------+------+--------------+ +| | sidebar-chapter | main | sidebar-book | ++=====+=================+======+==============+ +| sml | 12 (collapsed) | 12 | - | +| md | 12 (collapsed) | 9 | 3 | +| lg | 3 | 7 | 2 | ++-----+-----------------+------+--------------+ + +Side uses container-fluid so we set up some additional breakpoints, to ensure +that the columns never get too wide, either individually or collectively. + +*/ + + +@media (min-width: 1200px) { + .container-fluid { + max-width: 95rem; + } + .container-fluid .row { + justify-content: space-evenly; + } + .container-fluid main { + max-width: 45rem; + } + .sidebar { + max-width: 15rem; + } + + /* Increase font-size for very wide devices */ + body { + font-size: 18px + } +} + +main {margin-top: 1rem;} + +@media (max-width: 991.98px) { + .sidebar { + max-width: 100%; + } + + .collapse-lg { + display: none; + padding: 1rem; + border-radius: 0.2rem; + background: #fafafa; + margin-top: 0.5rem; + margin-bottom: 1rem; + box-shadow: 5px 5px 10px rgba(0.1, 0.1, 0.1, 0.5); + border: 1px solid var(--primary); + } + .book-toc { + column-count: 2; + } + .sidebar-book, main { + padding-left: 1rem; + } + .sidebar-book { + margin-top: 1rem; + } +} +@media (min-width: 992px) { + .collapse-lg { + display: block !important; + } +} +.collapse-lg.show { + display: block; +} + +@media (min-width: 768px) { + .sidebar-chapter { + position: sticky; + max-height: 100vh; + top: 0; + overflow-y: auto; + } +} + +@media (min-width: 992px) { + .sidebar-book { + position: sticky; + max-height: 100vh; + top: 0; + overflow-y: auto; + } +} + +/* Chapter nav ----------------------------------------- */ + +.chapter-nav { + display: flex; + justify-content: space-between; + margin-top: 2rem; +} +.chapter-nav .prev, .chapter-nav .next { + padding: 0.5rem; + border: 1px solid #eee; + border-radius: 0.2rem; + box-shadow: 0 .5rem 1rem rgba(0,0,0,.15); +} +.chapter-nav .empty { + border: none; +} +.chapter-nav .prev a:before { + content: "« "; +} +.chapter-nav .next a:after { + content: " »"; +} + +/* Sidebar ------------------------------------------------------ */ + +.sidebar h1, .sidebar h2 { + margin-top: 1.5rem; + margin-bottom: 0.5rem; +} +.sidebar h1 { + font-size: 1.1rem; +} +@media (max-width: 991.98px) { + .sidebar h1 { + font-size: 1.5rem; + margin-top: 0rem; + } +} +.sidebar h2 { + font-size: 0.9rem; +} + +.sidebar hr { + margin: 0 0 0.5rem 0; +} + +.sidebar li { + margin-bottom: 0.5rem; + font-size: 0.9rem; + line-height: 1.5; +} + +.sidebar li.book-part { + margin-top: 1rem; +} + +.book-toc .active { + font-weight: bolder; +} + +.book-extra { + border-top: 1px solid #ccc; + margin-top: 0.5rem; + padding-top: 0.5rem; + font-size: 0.9rem; +} + +.book-extra i { + font-size: 1.2em; +} + +/* Sticky footer ----------------------------------------- */ +html, body {height: 100%} + +body { + display: flex; + flex-direction: column; +} +.container-fluid { + flex: 1 0 auto; +} +footer { + flex-shrink: 0; + font-size: 0.9rem; + +} +footer a { + text-decoration: underline; +} + +/* Scrollspy --------------------------------------------- */ + +nav[data-toggle="toc"] .nav > li { + margin-bottom: calc(0.5rem - 3px); +} + +nav[data-toggle="toc"] .nav > li > a { + padding: 3px; + display: block; +} + +nav[data-toggle="toc"] .nav > li > a:hover { + text-decoration: underline; +} + +nav[data-toggle="toc"] .nav a.nav-link.active, +nav[data-toggle="toc"] .nav .nav-link.active > li > a { + background-color: #eee; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle="toc"] .nav-link + ul { + display: none; +} +nav[data-toggle="toc"] .nav-link.active + ul { + margin-top: 3px; + display: block; +} + +nav[data-toggle="toc"] .nav .nav > li { + margin-bottom: 0; +} +nav[data-toggle="toc"] .nav .nav > li > a { + margin-left: 10px; +} +/* Figures -------------------------------------------- */ + +.figure, .inline-figure { + width: 100%; + overflow-x: auto; +} + +.inline-figure { + border: solid 2px #f1f1f1; + margin-bottom: 1rem; /* to match

*/ +} + +.figure { + border-top: 2px solid #eee; + border-bottom: 2px solid #eee; + margin: 1.5rem -0.5rem 1rem -0.5rem; + padding: 1.5rem 0 1rem 1rem; +} + +@media (max-width: 767.98px) { + .figure { + margin: 1.5rem -1rem 1.5rem -1rem; + padding: 1.5rem; + width: 100vw; + } +} + +caption, p.caption { + text-align: left; + margin-top: 1rem; + margin-bottom: 0; + font-size: 0.9rem; + color: #777; +} + +/* Headings -------------------------------------------- */ + +h2 { + margin-top: 2rem; + margin-bottom: 1rem; + font-size: 1.5rem; +} +h3 { margin-top: 1.5em; font-size: 1.2rem; } +h4 { margin-top: 1.5em; font-size: 1.1rem; } +h5 { margin-top: 1.5em; font-size: 1rem; } + +h1, h2, h3, h4, h5 { + line-height: 1.3; +} + +.header-section-number { + color: #6C6C6C; + font-weight: normal; +} + +.dropdown-item .header-section-number { + position: absolute; + width: 2rem; + left: -1rem; + display: block; + text-align: right; +} + +.anchor { + font-size: max(0.5em, 1rem); + margin-left: 0.5rem; + display: none; +} +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline; +} + +/* Tables ---------------------------------------------- */ + +.inline-table { + overflow-x: auto; +} + +table.kable_wrapper td { + vertical-align: top; +} + + +/* Footnotes --------------------------------------------- */ + +.popover { + max-width: min(100vw, 32rem); + font-size: 0.9rem; + box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3); +} +.popover-body { + padding: 0.75rem; +} +.popover-body p:last-child { + margin-bottom: 0; +} + +a.footnote-ref { + cursor: pointer; +} + +/* Search ---------------------------------------------- */ + +mark { + background: linear-gradient(-100deg, + hsla(48,92%,75%,.3), + hsla(48,92%,75%,.7) 95%, + hsla(48,92%,75%,.1) + ) +} + +.algolia-autocomplete .aa-hint { + color: #999; +} +.algolia-autocomplete .aa-dropdown-menu { + width: min(100%, 20rem); + background-color: #fff; + border: 1px solid var(--gray); + border-radius: 0.2rem; + margin-top: 2px; + + max-height: 50vh; + overflow-y: auto; +} +.algolia-autocomplete .aa-dropdown-menu .aa-suggestion { + cursor: pointer; + padding: 5px 4px; + border-bottom: 1px #ddd solid; + font-size: 0.9rem; +} +.algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { + background-color: #B2D7FF; +} + +/* Code ------------------------------------------------ */ + +pre { + position: relative; + overflow: auto; + border: 1px solid #eee; + padding: 0.5rem; + margin: 0 -0.5rem 1rem -0.5rem; + background-image: linear-gradient(160deg,#f8f8f8 0,#f1f1f1 100%); +} + +@media (max-width: 767.98px) { + /* Make background span full width on mobile */ + .section > .sourceCode > pre { + margin: 0 -1rem 1rem -1rem; + padding: 0.5rem 1rem; + width: 100vw; + } +} + +code { + background-color: #f8f8f8; +} + +pre code { + background-color: transparent; + word-break: normal; /* force wide blocks to scroll, not wrap */ + word-wrap: normal; +} + +pre, code { + border-radius: 0.2rem; + color: #212529; /* match text colour */ +} +code a:any-link { + color: inherit; /* use colour from syntax highlighting */ + text-decoration: underline; + text-decoration-color: #ccc; +} + +/* copy button */ + +div.sourceCode { + position: relative; +} + +.btn-copy { + position: absolute; + top: 0rem; + right: -0.5rem; /* coherent with pre margin rule */ +} + +div.sourceCode > button { + filter: opacity(50%); +} + +div.sourceCode > button:hover { + filter: opacity(100%); +} + +div.sourceCode > button > i.bi::before { + display: inline-block; + height: 1rem; + width: 1rem; + content: ""; + vertical-align: -0.125em; + background-image: url('data:image/svg+xml,'); + background-repeat: no-repeat; + background-size: 1rem 1rem; +} + +div.sourceCode > button.btn-copy-checked > .bi::before { + background-image: url('data:image/svg+xml,'); +} + +/* https://github.com/rstudio/distill/blob/master/inst/rmarkdown/templates/distill_article/resources/a11y.theme + https://gist.github.com/hadley/f53b6e92df20994fdabe6562d284728a */ +code span.ot {color:#007faa} +code span.at {color:#7d9029} +code span.ss {color:#bb6688} +code span.an {color:#545454;} +code span.fu {color:#4254A7} +code span.st {color:#008000} +code span.cf {color:#007faa;} +code span.op {color:#696969} +code span.er {color:#ff0000;} +code span.bn {color:#a1024a} +code span.al {color:#ff0000;} +code span.va {color:#19177c} +code span.bu {color: #007faa;} +code span.ex {} +code span.pp {color:#bc7a00} +code span.in {color:#545454;} +code span.vs {color:#008000} +code span.wa {color:#545454; font-style: italic} +code span.do {color:#ba2121; font-style: italic} +code span.im {color:#007faa; font-weight: bold;} +code span.ch {color:#008000} +code span.dt {color:#aa5d00} +code span.fl {color:#a1024a} +code span.co {color:#545454} +code span.cv {color:#545454; font-style: italic} +code span.cn {color:#d91e18} +code span.sc {color:#008000} +code span.dv {color:#a1024a} +code span.kw {color:#007faa} + +/* Misc typography ---------------------------------------------- */ + +a { + overflow-wrap: break-word; + word-wrap: break-word; +} + +blockquote { + border-left: 0.5rem solid #eee; + padding-left: 0.5rem; + margin-left: -0.5rem; +} + +body { + line-height: 1.6; +} + +.smallcaps { + font-variant: small-caps; +} + +/* special callout blocks */ + +.rmdnote, .rmdcaution, .rmdimportant, .rmdtip, .rmdwarning { + margin: 1rem calc(-2px - 0.5em); + padding: 1rem; + border: 2px solid #eee; +} + +.rmdnote > *:last-child, .rmdcaution > *:last-child, .rmdimportant > *:last-child, .rmdtip > *:last-child, .rmdwarning > *:last-child { + margin-bottom: 0; +} + +@media (max-width: 767.98px) { + .rmdnote, .rmdcaution, .rmdimportant, .rmdtip, .rmdwarning { + margin: 1rem -1rem; + border-width: 4px; + } +} + +.rmdnote { + border-color: var(--primary); +} +.rmdimportant { + border-color: var(--success); +} +.rmdcaution { + border-color: var(--danger); +} +.rmdwarning { + border-color: var(--warning); +} +.rmdtip { + border-color: var(--info); +} + +.rmdcaution pre, .rmdimportant pre, .rmdnote pre, .rmdtip pre, .rmdwarning pre { + /* Make code blocks full width in rmdnote */ + margin: 0 -1rem 1rem -1rem; + padding: 1rem; +} + +.rmdcaution .btn-copy, .rmdimportant .btn-copy, .rmdnote .btn-copy, .rmdtip .btn-copy, .rmdwarning .btn-copy { + /* Needs to be set according to margin in callout pre block */ + right: -1rem; +} + +main ul { + list-style-type: square; +} +main ol, main ul { + padding-left: 25px; + margin-bottom: 0; +} +main li { + margin-bottom: 0.5rem; +} +main ol > li:first-child, main ul > li:first-child { + margin-top: 0.5rem; +} + +/* Cover image */ + +img.cover { + float: right; + margin: 0 1rem 0 1rem; + box-shadow: 0 .5rem 1rem rgba(0,0,0,.15); +} +@media (max-width: 767.98px) { + img.cover { + float: none; + display: block; + margin: 0 auto 1rem auto; + } +} diff --git a/docs/libs/bs4_book-1.0.0/bs4_book.js b/docs/libs/bs4_book-1.0.0/bs4_book.js new file mode 100644 index 0000000..667c7d9 --- /dev/null +++ b/docs/libs/bs4_book-1.0.0/bs4_book.js @@ -0,0 +1,137 @@ +$(function () { + var url = new URL(window.location.href); + var toMark = url.searchParams.get("q"); + var mark = new Mark("main"); + if (toMark) { + mark.mark(toMark, { + accuracy: { + value: "complementary", + limiters: [",", ".", ":", "/"], + } + }); + } + + // Activate popovers + $('[data-toggle="popover"]').popover({ + container: 'body', + html: true, + trigger: 'focus', + placement: "top", + sanitize: false, + }); + $('[data-toggle="tooltip"]').tooltip(); +}) + +// Search ---------------------------------------------------------------------- + +var fuse; + +$(function () { + // Initialise search index on focus + $("#search").focus(async function(e) { + if (fuse) { + return; + } + + $(e.target).addClass("loading"); + + var response = await fetch('search.json'); + var data = await response.json(); + + var options = { + keys: ["heading", "text", "code"], + ignoreLocation: true, + ignoreFieldNorm: true, + threshold: 0.1, + includeMatches: true, + includeScore: true, + }; + fuse = new Fuse(data, options); + + $(e.target).removeClass("loading"); + }); + + // Use algolia autocomplete + var options = { + autoselect: true, + debug: true, + hint: false, + minLength: 2, + }; + + $("#search").autocomplete(options, [ + { + name: "content", + source: searchFuse, + templates: { + suggestion: (s) => { + if (s.chapter == s.heading) { + return `${s.chapter}`; + } else { + return `${s.chapter} /
${s.heading}`; + } + }, + }, + }, + ]).on('autocomplete:selected', function(event, s) { + window.location.href = s.path + "?q=" + q + "#" + s.id; + }); +}); + +var q; +async function searchFuse(query, callback) { + await fuse; + + var items; + if (!fuse) { + items = []; + } else { + q = query; + var results = fuse.search(query, { limit: 20 }); + items = results + .filter((x) => x.score <= 0.75) + .map((x) => x.item); + } + + callback(items); +} + +// Copy to clipboard ----------------------------------------------------------- + +function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-original-title'); + element.setAttribute('data-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-original-title', tooltipOriginalTitle); +} + +$(document).ready(function() { + if(ClipboardJS.isSupported()) { + // Insert copy buttons + var copyButton = ""; + $(copyButton).appendTo("div.sourceCode"); + // Initialize tooltips: + $('.btn-copy').tooltip({container: 'body', boundary: 'window'}); + + // Initialize clipboard: + var clipboard = new ClipboardJS('.btn-copy', { + text: function(trigger) { + return trigger.parentNode.textContent; + } + }); + + clipboard.on('success', function(e) { + const btn = e.trigger; + changeTooltipMessage(btn, 'Copied!'); + btn.classList.add('btn-copy-checked'); + setTimeout(function() { + btn.classList.remove('btn-copy-checked'); + }, 2000); + e.clearSelection(); + }); + + clipboard.on('error', function() { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); + }; +}); diff --git a/docs/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf b/docs/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/docs/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf differ diff --git a/docs/libs/gitbook-2.6.7/css/plugin-bookdown.css b/docs/libs/gitbook-2.6.7/css/plugin-bookdown.css new file mode 100644 index 0000000..ab7c20e --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-bookdown.css @@ -0,0 +1,105 @@ +.book .book-header h1 { + padding-left: 20px; + padding-right: 20px; +} +.book .book-header.fixed { + position: fixed; + right: 0; + top: 0; + left: 0; + border-bottom: 1px solid rgba(0,0,0,.07); +} +span.search-highlight { + background-color: #ffff88; +} +@media (min-width: 600px) { + .book.with-summary .book-header.fixed { + left: 300px; + } +} +@media (max-width: 1240px) { + .book .book-body.fixed { + top: 50px; + } + .book .book-body.fixed .body-inner { + top: auto; + } +} +@media (max-width: 600px) { + .book.with-summary .book-header.fixed { + left: calc(100% - 60px); + min-width: 300px; + } + .book.with-summary .book-body { + transform: none; + left: calc(100% - 60px); + min-width: 300px; + } + .book .book-body.fixed { + top: 0; + } +} + +.book .book-body.fixed .body-inner { + top: 50px; +} +.book .book-body .page-wrapper .page-inner section.normal sub, .book .book-body .page-wrapper .page-inner section.normal sup { + font-size: 85%; +} + +@media print { + .book .book-summary, .book .book-body .book-header, .fa { + display: none !important; + } + .book .book-body.fixed { + left: 0px; + } + .book .book-body,.book .book-body .body-inner, .book.with-summary { + overflow: visible !important; + } +} +.kable_wrapper { + border-spacing: 20px 0; + border-collapse: separate; + border: none; + margin: auto; +} +.kable_wrapper > tbody > tr > td { + vertical-align: top; +} +.book .book-body .page-wrapper .page-inner section.normal table tr.header { + border-top-width: 2px; +} +.book .book-body .page-wrapper .page-inner section.normal table tr:last-child td { + border-bottom-width: 2px; +} +.book .book-body .page-wrapper .page-inner section.normal table td, .book .book-body .page-wrapper .page-inner section.normal table th { + border-left: none; + border-right: none; +} +.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr, .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr > td { + border-top: none; +} +.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr:last-child > td { + border-bottom: none; +} + +div.theorem, div.lemma, div.corollary, div.proposition, div.conjecture { + font-style: italic; +} +span.theorem, span.lemma, span.corollary, span.proposition, span.conjecture { + font-style: normal; +} +div.proof>*:last-child:after { + content: "\25a2"; + float: right; +} +.header-section-number { + padding-right: .5em; +} +#header .multi-author { + margin: 0.5em 0 -0.5em 0; +} +#header .date { + margin-top: 1.5em; +} diff --git a/docs/libs/gitbook-2.6.7/css/plugin-clipboard.css b/docs/libs/gitbook-2.6.7/css/plugin-clipboard.css new file mode 100644 index 0000000..6844a70 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-clipboard.css @@ -0,0 +1,18 @@ +div.sourceCode { + position: relative; +} + +.copy-to-clipboard-button { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.copy-to-clipboard-button:focus { + outline: 0; +} + +div.sourceCode:hover > .copy-to-clipboard-button { + visibility: visible; +} diff --git a/docs/libs/gitbook-2.6.7/css/plugin-fontsettings.css b/docs/libs/gitbook-2.6.7/css/plugin-fontsettings.css new file mode 100644 index 0000000..3fa6f35 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-fontsettings.css @@ -0,0 +1,303 @@ +/* + * Theme 1 + */ +.color-theme-1 .dropdown-menu { + background-color: #111111; + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #111111; +} +.color-theme-1 .dropdown-menu .buttons { + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .button { + color: #afa790; +} +.color-theme-1 .dropdown-menu .button:hover { + color: #73553c; +} +/* + * Theme 2 + */ +.color-theme-2 .dropdown-menu { + background-color: #2d3143; + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #2d3143; +} +.color-theme-2 .dropdown-menu .buttons { + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .button { + color: #62677f; +} +.color-theme-2 .dropdown-menu .button:hover { + color: #f4f4f5; +} +.book .book-header .font-settings .font-enlarge { + line-height: 30px; + font-size: 1.4em; +} +.book .book-header .font-settings .font-reduce { + line-height: 30px; + font-size: 1em; +} + +/* sidebar transition background */ +div.book.color-theme-1 { + background: #f3eacb; +} +.book.color-theme-1 .book-body { + color: #704214; + background: #f3eacb; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section { + background: #f3eacb; +} + +/* sidebar transition background */ +div.book.color-theme-2 { + background: #1c1f2b; +} + +.book.color-theme-2 .book-body { + color: #bdcadb; + background: #1c1f2b; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section { + background: #1c1f2b; +} +.book.font-size-0 .book-body .page-inner section { + font-size: 1.2rem; +} +.book.font-size-1 .book-body .page-inner section { + font-size: 1.4rem; +} +.book.font-size-2 .book-body .page-inner section { + font-size: 1.6rem; +} +.book.font-size-3 .book-body .page-inner section { + font-size: 2.2rem; +} +.book.font-size-4 .book-body .page-inner section { + font-size: 4rem; +} +.book.font-family-0 { + font-family: Georgia, serif; +} +.book.font-family-1 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { + color: #704214; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: #c4b29f; + opacity: 0.9; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + background: #fdf6e3; + color: #657b83; + border-color: #f8df9c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #f5d06c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { + color: inherit; + background-color: #fdf6e3; + border-color: #444444; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #fbeecb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { + color: #bdcadb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { + color: #3eb1d0; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #fffffa; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { + background-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { + color: #9dbed8; + background: #2d3143; + border-color: #2d3143; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: #282a39; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { + color: #b6c2d2; + background-color: #2d3143; + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #35394b; +} +.book.color-theme-1 .book-header { + color: #afa790; + background: transparent; +} +.book.color-theme-1 .book-header .btn { + color: #afa790; +} +.book.color-theme-1 .book-header .btn:hover { + color: #73553c; + background: none; +} +.book.color-theme-1 .book-header h1 { + color: #704214; +} +.book.color-theme-2 .book-header { + color: #7e888b; + background: transparent; +} +.book.color-theme-2 .book-header .btn { + color: #3b3f54; +} +.book.color-theme-2 .book-header .btn:hover { + color: #fffff5; + background: none; +} +.book.color-theme-2 .book-header h1 { + color: #bdcadb; +} +.book.color-theme-1 .book-body .navigation { + color: #afa790; +} +.book.color-theme-1 .book-body .navigation:hover { + color: #73553c; +} +.book.color-theme-2 .book-body .navigation { + color: #383f52; +} +.book.color-theme-2 .book-body .navigation:hover { + color: #fffff5; +} +/* + * Theme 1 + */ +.book.color-theme-1 .book-summary { + color: #afa790; + background: #111111; + border-right: 1px solid rgba(0, 0, 0, 0.07); +} +.book.color-theme-1 .book-summary .book-search { + background: transparent; +} +.book.color-theme-1 .book-summary .book-search input, +.book.color-theme-1 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-1 .book-summary ul.summary li.divider { + background: #7e888b; + box-shadow: none; +} +.book.color-theme-1 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-1 .book-summary ul.summary li.done > a { + color: #877f6a; +} +.book.color-theme-1 .book-summary ul.summary li a, +.book.color-theme-1 .book-summary ul.summary li span { + color: #877f6a; + background: transparent; + font-weight: normal; +} +.book.color-theme-1 .book-summary ul.summary li.active > a, +.book.color-theme-1 .book-summary ul.summary li a:hover { + color: #704214; + background: transparent; + font-weight: normal; +} +/* + * Theme 2 + */ +.book.color-theme-2 .book-summary { + color: #bcc1d2; + background: #2d3143; + border-right: none; +} +.book.color-theme-2 .book-summary .book-search { + background: transparent; +} +.book.color-theme-2 .book-summary .book-search input, +.book.color-theme-2 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-2 .book-summary ul.summary li.divider { + background: #272a3a; + box-shadow: none; +} +.book.color-theme-2 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-2 .book-summary ul.summary li.done > a { + color: #62687f; +} +.book.color-theme-2 .book-summary ul.summary li a, +.book.color-theme-2 .book-summary ul.summary li span { + color: #c1c6d7; + background: transparent; + font-weight: 600; +} +.book.color-theme-2 .book-summary ul.summary li.active > a, +.book.color-theme-2 .book-summary ul.summary li a:hover { + color: #f4f4f5; + background: #252737; + font-weight: 600; +} diff --git a/docs/libs/gitbook-2.6.7/css/plugin-highlight.css b/docs/libs/gitbook-2.6.7/css/plugin-highlight.css new file mode 100644 index 0000000..2aabd3d --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-highlight.css @@ -0,0 +1,426 @@ +.book .book-body .page-wrapper .page-inner section.normal pre, +.book .book-body .page-wrapper .page-inner section.normal code { + /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + /* Tomorrow Comment */ + /* Tomorrow Red */ + /* Tomorrow Orange */ + /* Tomorrow Yellow */ + /* Tomorrow Green */ + /* Tomorrow Aqua */ + /* Tomorrow Blue */ + /* Tomorrow Purple */ +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-title { + color: #8e908c; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { + color: #c82829; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-params, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant { + color: #f5871f; +} +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { + color: #eab700; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-value, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-header, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + color: #718c00; +} +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { + color: #3e999f; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, +.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, +.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, +.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { + color: #4271ae; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { + color: #8959a8; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + background: white; + color: #4d4d4c; + padding: 0.5em; +} +.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, +.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml, +.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, +.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, +.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .css, +.book .book-body .page-wrapper .page-inner section.normal code .xml .css, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + opacity: 0.5; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + /* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + /* Solarized Green */ + /* Solarized Cyan */ + /* Solarized Blue */ + /* Solarized Yellow */ + /* Solarized Orange */ + /* Solarized Red */ + /* Solarized Violet */ +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc { + color: #93a1a1; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title { + color: #859900; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url { + color: #2aa198; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function { + color: #268bd2; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference { + color: #b58900; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header { + color: #cb4b16; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important { + color: #dc322f; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label { + color: #6c71c4; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula { + background: #eee8d5; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { + /* Tomorrow Night Bright Theme */ + /* Original theme - https://github.com/chriskempson/tomorrow-theme */ + /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + /* Tomorrow Comment */ + /* Tomorrow Red */ + /* Tomorrow Orange */ + /* Tomorrow Yellow */ + /* Tomorrow Green */ + /* Tomorrow Aqua */ + /* Tomorrow Blue */ + /* Tomorrow Purple */ +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title { + color: #969896; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { + color: #d54e53; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant { + color: #e78c45; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { + color: #e7c547; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + color: #b9ca4a; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { + color: #70c0b1; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { + color: #7aa6da; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { + color: #c397d8; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + background: black; + color: #eaeaea; + padding: 0.5em; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + opacity: 0.5; +} diff --git a/docs/libs/gitbook-2.6.7/css/plugin-search.css b/docs/libs/gitbook-2.6.7/css/plugin-search.css new file mode 100644 index 0000000..c85e557 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-search.css @@ -0,0 +1,31 @@ +.book .book-summary .book-search { + padding: 6px; + background: transparent; + position: absolute; + top: -50px; + left: 0px; + right: 0px; + transition: top 0.5s ease; +} +.book .book-summary .book-search input, +.book .book-summary .book-search input:focus, +.book .book-summary .book-search input:hover { + width: 100%; + background: transparent; + border: 1px solid #ccc; + box-shadow: none; + outline: none; + line-height: 22px; + padding: 7px 4px; + color: inherit; + box-sizing: border-box; +} +.book.with-search .book-summary .book-search { + top: 0px; +} +.book.with-search .book-summary ul.summary { + top: 50px; +} +.with-search .summary li[data-level] a[href*=".html#"] { + display: none; +} diff --git a/docs/libs/gitbook-2.6.7/css/plugin-table.css b/docs/libs/gitbook-2.6.7/css/plugin-table.css new file mode 100644 index 0000000..7fba1b9 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/plugin-table.css @@ -0,0 +1 @@ +.book .book-body .page-wrapper .page-inner section.normal table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}.book .book-body .page-wrapper .page-inner section.normal table td,.book .book-body .page-wrapper .page-inner section.normal table th{padding:6px 13px;border:1px solid #ddd}.book .book-body .page-wrapper .page-inner section.normal table tr{background-color:#fff;border-top:1px solid #ccc}.book .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n){background-color:#f8f8f8}.book .book-body .page-wrapper .page-inner section.normal table th{font-weight:700} diff --git a/docs/libs/gitbook-2.6.7/css/style.css b/docs/libs/gitbook-2.6.7/css/style.css new file mode 100644 index 0000000..cba69b2 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/css/style.css @@ -0,0 +1,13 @@ +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */img,legend{border:0}*{-webkit-font-smoothing:antialiased}sub,sup{position:relative}.book .book-body .page-wrapper .page-inner section.normal hr:after,.book-langs-index .inner .languages:after,.buttons:after,.dropdown-menu .buttons:after{clear:both}body,html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}.hidden,[hidden]{display:none}audio:not([controls]){display:none;height:0}html{font-family:sans-serif}body,figure{margin:0}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button{margin-right:10px;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}/*! + * Preboot v2 + * + * Open sourced under MIT license by @mdo. + * Some variables and mixins from Bootstrap (Apache 2 license). + */.link-inherit,.link-inherit:focus,.link-inherit:hover{color:inherit}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('./fontawesome/fontawesome-webfont.ttf?v=4.7.0') format('truetype');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} +.book .book-header,.book .book-summary{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.book-langs-index{width:100%;height:100%;padding:40px 0;margin:0;overflow:auto}@media (max-width:600px){.book-langs-index{padding:0}}.book-langs-index .inner{max-width:600px;width:100%;margin:0 auto;padding:30px;background:#fff;border-radius:3px}.book-langs-index .inner h3{margin:0}.book-langs-index .inner .languages{list-style:none;padding:20px 30px;margin-top:20px;border-top:1px solid #eee}.book-langs-index .inner .languages:after,.book-langs-index .inner .languages:before{content:" ";display:table;line-height:0}.book-langs-index .inner .languages li{width:50%;float:left;padding:10px 5px;font-size:16px}@media (max-width:600px){.book-langs-index .inner .languages li{width:100%;max-width:100%}}.book .book-header{overflow:visible;height:50px;padding:0 8px;z-index:2;font-size:.85em;color:#7e888b;background:0 0}.book .book-header .btn{display:block;height:50px;padding:0 15px;border-bottom:none;color:#ccc;text-transform:uppercase;line-height:50px;-webkit-box-shadow:none!important;box-shadow:none!important;position:relative;font-size:14px}.book .book-header .btn:hover{position:relative;text-decoration:none;color:#444;background:0 0}.book .book-header h1{margin:0;font-size:20px;font-weight:200;text-align:center;line-height:50px;opacity:0;padding-left:200px;padding-right:200px;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book .book-header h1 a,.book .book-header h1 a:hover{color:inherit;text-decoration:none}@media (max-width:1000px){.book .book-header h1{display:none}}.book .book-header h1 i{display:none}.book .book-header:hover h1{opacity:1}.book.is-loading .book-header h1 i{display:inline-block}.book.is-loading .book-header h1 a{display:none}.dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;z-index:100;display:none;float:left;min-width:160px;padding:0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fafafa;border:1px solid rgba(0,0,0,.07);border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.open{display:block}.dropdown-menu.dropdown-left{left:auto;right:4%}.dropdown-menu.dropdown-left .dropdown-caret{right:14px;left:auto}.dropdown-menu .dropdown-caret{position:absolute;top:-8px;left:14px;width:18px;height:10px;float:left;overflow:hidden}.dropdown-menu .dropdown-caret .caret-inner,.dropdown-menu .dropdown-caret .caret-outer{display:inline-block;top:0;border-left:9px solid transparent;border-right:9px solid transparent;position:absolute}.dropdown-menu .dropdown-caret .caret-outer{border-bottom:9px solid rgba(0,0,0,.1);height:auto;left:0;width:auto;margin-left:-1px}.dropdown-menu .dropdown-caret .caret-inner{margin-top:-1px;top:1px;border-bottom:9px solid #fafafa}.dropdown-menu .buttons{border-bottom:1px solid rgba(0,0,0,.07)}.dropdown-menu .buttons:after,.dropdown-menu .buttons:before{content:" ";display:table;line-height:0}.dropdown-menu .buttons:last-child{border-bottom:none}.dropdown-menu .buttons .button{border:0;background-color:transparent;color:#a6a6a6;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.alert,.dropdown-menu .buttons .button:hover{color:#444}.dropdown-menu .buttons .button:focus,.dropdown-menu .buttons .button:hover{outline:0}.dropdown-menu .buttons .button.size-2{width:50%}.dropdown-menu .buttons .button.size-3{width:33%}.alert{padding:15px;margin-bottom:20px;background:#eee;border-bottom:5px solid #ddd}.alert-success{background:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-info{background:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-danger{background:#f2dede;border-color:#ebccd1;color:#a94442}.alert-warning{background:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.book .book-summary{position:absolute;top:0;left:-300px;bottom:0;z-index:1;width:300px;color:#364149;background:#fafafa;border-right:1px solid rgba(0,0,0,.07);-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book .book-summary ul.summary{position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;list-style:none;margin:0;padding:0;-webkit-transition:top .5s ease;-moz-transition:top .5s ease;-o-transition:top .5s ease;transition:top .5s ease}.book .book-summary ul.summary li{list-style:none}.book .book-summary ul.summary li.divider{height:1px;margin:7px 0;overflow:hidden;background:rgba(0,0,0,.07)}.book .book-summary ul.summary li i.fa-check{display:none;position:absolute;right:9px;top:16px;font-size:9px;color:#3c3}.book .book-summary ul.summary li.done>a{color:#364149;font-weight:400}.book .book-summary ul.summary li.done>a i{display:inline}.book .book-summary ul.summary li a,.book .book-summary ul.summary li span{display:block;padding:10px 15px;border-bottom:none;color:#364149;background:0 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.book .book-summary ul.summary li span{cursor:not-allowed;opacity:.3;filter:alpha(opacity=30)}.book .book-summary ul.summary li a:hover,.book .book-summary ul.summary li.active>a{color:#008cff;background:0 0;text-decoration:none}.book .book-summary ul.summary li ul{padding-left:20px}@media (max-width:600px){.book .book-summary{width:calc(100% - 60px);bottom:0;left:-100%}}.book.with-summary .book-summary{left:0}.book.without-animation .book-summary{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.book{position:relative;width:100%;height:100%}.book .book-body,.book .book-body .body-inner{position:absolute;top:0;left:0;overflow-y:auto;bottom:0;right:0}.book .book-body{color:#000;background:#fff;-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book .book-body .page-wrapper{position:relative;outline:0}.book .book-body .page-wrapper .page-inner{max-width:800px;margin:0 auto;padding:20px 0 40px}.book .book-body .page-wrapper .page-inner section{margin:0;padding:5px 15px;background:#fff;border-radius:2px;line-height:1.7;font-size:1.6rem}.book .book-body .page-wrapper .page-inner .btn-group .btn{border-radius:0;background:#eee;border:0}@media (max-width:1240px){.book .book-body{-webkit-transition:-webkit-transform 250ms ease;-moz-transition:-moz-transform 250ms ease;-o-transition:-o-transform 250ms ease;transition:transform 250ms ease;padding-bottom:20px}.book .book-body .body-inner{position:static;min-height:calc(100% - 50px)}}@media (min-width:600px){.book.with-summary .book-body{left:300px}}@media (max-width:600px){.book.with-summary{overflow:hidden}.book.with-summary .book-body{-webkit-transform:translate(calc(100% - 60px),0);-moz-transform:translate(calc(100% - 60px),0);-ms-transform:translate(calc(100% - 60px),0);-o-transform:translate(calc(100% - 60px),0);transform:translate(calc(100% - 60px),0)}}.book.without-animation .book-body{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.buttons:after,.buttons:before{content:" ";display:table;line-height:0}.button{border:0;background:#eee;color:#666;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.button:hover{color:#444}.button:focus,.button:hover{outline:0}.button.size-2{width:50%}.button.size-3{width:33%}.book .book-body .page-wrapper .page-inner section{display:none}.book .book-body .page-wrapper .page-inner section.normal{display:block;word-wrap:break-word;overflow:hidden;color:#333;line-height:1.7;text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}.book .book-body .page-wrapper .page-inner section.normal *{box-sizing:border-box;-webkit-box-sizing:border-box;}.book .book-body .page-wrapper .page-inner section.normal>:first-child{margin-top:0!important}.book .book-body .page-wrapper .page-inner section.normal>:last-child{margin-bottom:0!important}.book .book-body .page-wrapper .page-inner section.normal blockquote,.book .book-body .page-wrapper .page-inner section.normal code,.book .book-body .page-wrapper .page-inner section.normal figure,.book .book-body .page-wrapper .page-inner section.normal img,.book .book-body .page-wrapper .page-inner section.normal pre,.book .book-body .page-wrapper .page-inner section.normal table,.book .book-body .page-wrapper .page-inner section.normal tr{page-break-inside:avoid}.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5,.book .book-body .page-wrapper .page-inner section.normal p{orphans:3;widows:3}.book .book-body .page-wrapper .page-inner section.normal h1,.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5{page-break-after:avoid}.book .book-body .page-wrapper .page-inner section.normal b,.book .book-body .page-wrapper .page-inner section.normal strong{font-weight:700}.book .book-body .page-wrapper .page-inner section.normal em{font-style:italic}.book .book-body .page-wrapper .page-inner section.normal blockquote,.book .book-body .page-wrapper .page-inner section.normal dl,.book .book-body .page-wrapper .page-inner section.normal ol,.book .book-body .page-wrapper .page-inner section.normal p,.book .book-body .page-wrapper .page-inner section.normal table,.book .book-body .page-wrapper .page-inner section.normal ul{margin-top:0;margin-bottom:.85em}.book .book-body .page-wrapper .page-inner section.normal a{color:#4183c4;text-decoration:none;background:0 0}.book .book-body .page-wrapper .page-inner section.normal a:active,.book .book-body .page-wrapper .page-inner section.normal a:focus,.book .book-body .page-wrapper .page-inner section.normal a:hover{outline:0;text-decoration:underline}.book .book-body .page-wrapper .page-inner section.normal img{border:0;max-width:100%}.book .book-body .page-wrapper .page-inner section.normal hr{height:4px;padding:0;margin:1.7em 0;overflow:hidden;background-color:#e7e7e7;border:none}.book .book-body .page-wrapper .page-inner section.normal hr:after,.book .book-body .page-wrapper .page-inner section.normal hr:before{display:table;content:" "}.book .book-body .page-wrapper .page-inner section.normal h1,.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5,.book .book-body .page-wrapper .page-inner section.normal h6{margin-top:1.275em;margin-bottom:.85em;}.book .book-body .page-wrapper .page-inner section.normal h1{font-size:2em}.book .book-body .page-wrapper .page-inner section.normal h2{font-size:1.75em}.book .book-body .page-wrapper .page-inner section.normal h3{font-size:1.5em}.book .book-body .page-wrapper .page-inner section.normal h4{font-size:1.25em}.book .book-body .page-wrapper .page-inner section.normal h5{font-size:1em}.book .book-body .page-wrapper .page-inner section.normal h6{font-size:1em;color:#777}.book .book-body .page-wrapper .page-inner section.normal code,.book .book-body .page-wrapper .page-inner section.normal pre{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;direction:ltr;border:none;color:inherit}.book .book-body .page-wrapper .page-inner section.normal pre{overflow:auto;word-wrap:normal;margin:0 0 1.275em;padding:.85em 1em;background:#f7f7f7}.book .book-body .page-wrapper .page-inner section.normal pre>code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;font-size:.85em;white-space:pre;background:0 0}.book .book-body .page-wrapper .page-inner section.normal pre>code:after,.book .book-body .page-wrapper .page-inner section.normal pre>code:before{content:normal}.book .book-body .page-wrapper .page-inner section.normal code{padding:.2em;margin:0;font-size:.85em;background-color:#f7f7f7}.book .book-body .page-wrapper .page-inner section.normal code:after,.book .book-body .page-wrapper .page-inner section.normal code:before{letter-spacing:-.2em;content:"\00a0"}.book .book-body .page-wrapper .page-inner section.normal ol,.book .book-body .page-wrapper .page-inner section.normal ul{padding:0 0 0 2em;margin:0 0 .85em}.book .book-body .page-wrapper .page-inner section.normal ol ol,.book .book-body .page-wrapper .page-inner section.normal ol ul,.book .book-body .page-wrapper .page-inner section.normal ul ol,.book .book-body .page-wrapper .page-inner section.normal ul ul{margin-top:0;margin-bottom:0}.book .book-body .page-wrapper .page-inner section.normal ol ol{list-style-type:lower-roman}.book .book-body .page-wrapper .page-inner section.normal blockquote{margin:0 0 .85em;padding:0 15px;opacity:0.75;border-left:4px solid #dcdcdc}.book .book-body .page-wrapper .page-inner section.normal blockquote:first-child{margin-top:0}.book .book-body .page-wrapper .page-inner section.normal blockquote:last-child{margin-bottom:0}.book .book-body .page-wrapper .page-inner section.normal dl{padding:0}.book .book-body .page-wrapper .page-inner section.normal dl dt{padding:0;margin-top:.85em;font-style:italic;font-weight:700}.book .book-body .page-wrapper .page-inner section.normal dl dd{padding:0 .85em;margin-bottom:.85em}.book .book-body .page-wrapper .page-inner section.normal dd{margin-left:0}.book .book-body .page-wrapper .page-inner section.normal .glossary-term{cursor:help;text-decoration:underline}.book .book-body .navigation{position:absolute;top:50px;bottom:0;margin:0;max-width:150px;min-width:90px;display:flex;justify-content:center;align-content:center;flex-direction:column;font-size:40px;color:#ccc;text-align:center;-webkit-transition:all 350ms ease;-moz-transition:all 350ms ease;-o-transition:all 350ms ease;transition:all 350ms ease}.book .book-body .navigation:hover{text-decoration:none;color:#444}.book .book-body .navigation.navigation-next{right:0}.book .book-body .navigation.navigation-prev{left:0}@media (max-width:1240px){.book .book-body .navigation{position:static;top:auto;max-width:50%;width:50%;display:inline-block;float:left}.book .book-body .navigation.navigation-unique{max-width:100%;width:100%}}.book .book-body .page-wrapper .page-inner section.glossary{margin-bottom:40px}.book .book-body .page-wrapper .page-inner section.glossary h2 a,.book .book-body .page-wrapper .page-inner section.glossary h2 a:hover{color:inherit;text-decoration:none}.book .book-body .page-wrapper .page-inner section.glossary .glossary-index{list-style:none;margin:0;padding:0}.book .book-body .page-wrapper .page-inner section.glossary .glossary-index li{display:inline;margin:0 8px;white-space:nowrap}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:auto;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:none;-webkit-touch-callout:none}a{text-decoration:none}body,html{height:100%}html{font-size:62.5%}body{text-rendering:optimizeLegibility;font-smoothing:antialiased;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:.2px;text-size-adjust:100%} +.book .book-summary ul.summary li a span {display:inline;padding:initial;overflow:visible;cursor:auto;opacity:1;} +/* show arrow before summary tag as in bootstrap */ +details > summary {display:list-item;cursor:pointer;} diff --git a/docs/libs/gitbook-2.6.7/js/app.min.js b/docs/libs/gitbook-2.6.7/js/app.min.js new file mode 100644 index 0000000..643f1f9 --- /dev/null +++ b/docs/libs/gitbook-2.6.7/js/app.min.js @@ -0,0 +1 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o"'`]/g,reHasEscapedHtml=RegExp(reEscapedHtml.source),reHasUnescapedHtml=RegExp(reUnescapedHtml.source);var reEscape=/<%-([\s\S]+?)%>/g,reEvaluate=/<%([\s\S]+?)%>/g,reInterpolate=/<%=([\s\S]+?)%>/g;var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;var reRegExpChars=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,reHasRegExpChars=RegExp(reRegExpChars.source);var reComboMark=/[\u0300-\u036f\ufe20-\ufe23]/g;var reEscapeChar=/\\(\\)?/g;var reEsTemplate=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;var reFlags=/\w*$/;var reHasHexPrefix=/^0[xX]/;var reIsHostCtor=/^\[object .+?Constructor\]$/;var reIsUint=/^\d+$/;var reLatin1=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;var reNoMatch=/($^)/;var reUnescapedString=/['\n\r\u2028\u2029\\]/g;var reWords=function(){var upper="[A-Z\\xc0-\\xd6\\xd8-\\xde]",lower="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(upper+"+(?="+upper+lower+")|"+upper+"?"+lower+"|"+upper+"+|[0-9]+","g")}();var contextProps=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","isFinite","parseFloat","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap"];var templateCounter=-1;var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[stringTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[mapTag]=cloneableTags[setTag]=cloneableTags[weakMapTag]=false;var deburredLetters={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"};var htmlEscapes={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};var htmlUnescapes={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"};var objectTypes={function:true,object:true};var regexpEscapes={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"};var stringEscapes={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};var freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports;var freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module;var freeGlobal=freeExports&&freeModule&&typeof global=="object"&&global&&global.Object&&global;var freeSelf=objectTypes[typeof self]&&self&&self.Object&&self;var freeWindow=objectTypes[typeof window]&&window&&window.Object&&window;var moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports;var root=freeGlobal||freeWindow!==(this&&this.window)&&freeWindow||freeSelf||this;function baseCompareAscending(value,other){if(value!==other){var valIsNull=value===null,valIsUndef=value===undefined,valIsReflexive=value===value;var othIsNull=other===null,othIsUndef=other===undefined,othIsReflexive=other===other;if(value>other&&!othIsNull||!valIsReflexive||valIsNull&&!othIsUndef&&othIsReflexive||valIsUndef&&othIsReflexive){return 1}if(value-1){}return index}function charsRightIndex(string,chars){var index=string.length;while(index--&&chars.indexOf(string.charAt(index))>-1){}return index}function compareAscending(object,other){return baseCompareAscending(object.criteria,other.criteria)||object.index-other.index}function compareMultiple(object,other,orders){var index=-1,objCriteria=object.criteria,othCriteria=other.criteria,length=objCriteria.length,ordersLength=orders.length;while(++index=ordersLength){return result}var order=orders[index];return result*(order==="asc"||order===true?1:-1)}}return object.index-other.index}function deburrLetter(letter){return deburredLetters[letter]}function escapeHtmlChar(chr){return htmlEscapes[chr]}function escapeRegExpChar(chr,leadingChar,whitespaceChar){if(leadingChar){chr=regexpEscapes[chr]}else if(whitespaceChar){chr=stringEscapes[chr]}return"\\"+chr}function escapeStringChar(chr){return"\\"+stringEscapes[chr]}function indexOfNaN(array,fromIndex,fromRight){var length=array.length,index=fromIndex+(fromRight?0:-1);while(fromRight?index--:++index=9&&charCode<=13)||charCode==32||charCode==160||charCode==5760||charCode==6158||charCode>=8192&&(charCode<=8202||charCode==8232||charCode==8233||charCode==8239||charCode==8287||charCode==12288||charCode==65279)}function replaceHolders(array,placeholder){var index=-1,length=array.length,resIndex=-1,result=[];while(++index>>1;var MAX_SAFE_INTEGER=9007199254740991;var metaMap=WeakMap&&new WeakMap;var realNames={};function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value}if(hasOwnProperty.call(value,"__chain__")&&hasOwnProperty.call(value,"__wrapped__")){return wrapperClone(value)}}return new LodashWrapper(value)}function baseLodash(){}function LodashWrapper(value,chainAll,actions){this.__wrapped__=value;this.__actions__=actions||[];this.__chain__=!!chainAll}var support=lodash.support={};lodash.templateSettings={escape:reEscape,evaluate:reEvaluate,interpolate:reInterpolate,variable:"",imports:{_:lodash}};function LazyWrapper(value){this.__wrapped__=value;this.__actions__=[];this.__dir__=1;this.__filtered__=false;this.__iteratees__=[];this.__takeCount__=POSITIVE_INFINITY;this.__views__=[]}function lazyClone(){var result=new LazyWrapper(this.__wrapped__);result.__actions__=arrayCopy(this.__actions__);result.__dir__=this.__dir__;result.__filtered__=this.__filtered__;result.__iteratees__=arrayCopy(this.__iteratees__);result.__takeCount__=this.__takeCount__;result.__views__=arrayCopy(this.__views__);return result}function lazyReverse(){if(this.__filtered__){var result=new LazyWrapper(this);result.__dir__=-1;result.__filtered__=true}else{result=this.clone();result.__dir__*=-1}return result}function lazyValue(){var array=this.__wrapped__.value(),dir=this.__dir__,isArr=isArray(array),isRight=dir<0,arrLength=isArr?array.length:0,view=getView(0,arrLength,this.__views__),start=view.start,end=view.end,length=end-start,index=isRight?end:start-1,iteratees=this.__iteratees__,iterLength=iteratees.length,resIndex=0,takeCount=nativeMin(length,this.__takeCount__);if(!isArr||arrLength=LARGE_ARRAY_SIZE?createCache(values):null,valuesLength=values.length;if(cache){indexOf=cacheIndexOf;isCommon=false;values=cache}outer:while(++indexlength?0:length+start}end=end===undefined||end>length?length:+end||0;if(end<0){end+=length}length=start>end?0:end>>>0;start>>>=0;while(startlength?0:length+start}end=end===undefined||end>length?length:+end||0;if(end<0){end+=length}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++index=LARGE_ARRAY_SIZE,seen=isLarge?createCache():null,result=[];if(seen){indexOf=cacheIndexOf;isCommon=false}else{isLarge=false;seen=iteratee?[]:result}outer:while(++index>>1,computed=array[mid];if((retHighest?computed<=value:computed2?sources[length-2]:undefined,guard=length>2?sources[2]:undefined,thisArg=length>1?sources[length-1]:undefined;if(typeof customizer=="function"){customizer=bindCallback(customizer,thisArg,5);length-=2}else{customizer=typeof thisArg=="function"?thisArg:undefined;length-=customizer?1:0}if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1}while(++index-1?collection[index]:undefined}return baseFind(collection,predicate,eachFunc)}}function createFindIndex(fromRight){return function(array,predicate,thisArg){if(!(array&&array.length)){return-1}predicate=getCallback(predicate,thisArg,3);return baseFindIndex(array,predicate,fromRight)}}function createFindKey(objectFunc){return function(object,predicate,thisArg){predicate=getCallback(predicate,thisArg,3);return baseFind(object,predicate,objectFunc,true)}}function createFlow(fromRight){return function(){var wrapper,length=arguments.length,index=fromRight?length:-1,leftIndex=0,funcs=Array(length);while(fromRight?index--:++index=LARGE_ARRAY_SIZE){return wrapper.plant(value).value()}var index=0,result=length?funcs[index].apply(this,args):value;while(++index=length||!nativeIsFinite(length)){return""}var padLength=length-strLength;chars=chars==null?" ":chars+"";return repeat(chars,nativeCeil(padLength/chars.length)).slice(0,padLength)}function createPartialWrapper(func,bitmask,thisArg,partials){var isBind=bitmask&BIND_FLAG,Ctor=createCtorWrapper(func);function wrapper(){var argsIndex=-1,argsLength=arguments.length,leftIndex=-1,leftLength=partials.length,args=Array(leftLength+argsLength);while(++leftIndexarrLength)){return false}while(++index-1&&value%1==0&&value-1&&value%1==0&&value<=MAX_SAFE_INTEGER}function isStrictComparable(value){return value===value&&!isObject(value)}function mergeData(data,source){var bitmask=data[1],srcBitmask=source[1],newBitmask=bitmask|srcBitmask,isCommon=newBitmask0){if(++count>=HOT_COUNT){return key}}else{count=0}return baseSetData(key,value)}}();function shimKeys(object){var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length;var allowIndexes=!!length&&isLength(length)&&(isArray(object)||isArguments(object));var index=-1,result=[];while(++index=120?createCache(othIndex&&value):null}var array=arrays[0],index=-1,length=array?array.length:0,seen=caches[0];outer:while(++index-1){splice.call(array,fromIndex,1)}}return array}var pullAt=restParam(function(array,indexes){indexes=baseFlatten(indexes);var result=baseAt(array,indexes);basePullAt(array,indexes.sort(baseCompareAscending));return result});function remove(array,predicate,thisArg){var result=[];if(!(array&&array.length)){return result}var index=-1,indexes=[],length=array.length;predicate=getCallback(predicate,thisArg,3);while(++index2?arrays[length-2]:undefined,thisArg=length>1?arrays[length-1]:undefined;if(length>2&&typeof iteratee=="function"){length-=2}else{iteratee=length>1&&typeof thisArg=="function"?(--length,thisArg):undefined;thisArg=undefined}arrays.length=length;return unzipWith(arrays,iteratee,thisArg)});function chain(value){var result=lodash(value);result.__chain__=true;return result}function tap(value,interceptor,thisArg){interceptor.call(thisArg,value);return value}function thru(value,interceptor,thisArg){return interceptor.call(thisArg,value)}function wrapperChain(){return chain(this)}function wrapperCommit(){return new LodashWrapper(this.value(),this.__chain__)}var wrapperConcat=restParam(function(values){values=baseFlatten(values);return this.thru(function(array){return arrayConcat(isArray(array)?array:[toObject(array)],values)})});function wrapperPlant(value){var result,parent=this;while(parent instanceof baseLodash){var clone=wrapperClone(parent);if(result){previous.__wrapped__=clone}else{result=clone}var previous=clone;parent=parent.__wrapped__}previous.__wrapped__=value;return result}function wrapperReverse(){var value=this.__wrapped__;var interceptor=function(value){return wrapped&&wrapped.__dir__<0?value:value.reverse()};if(value instanceof LazyWrapper){var wrapped=value;if(this.__actions__.length){wrapped=new LazyWrapper(this)}wrapped=wrapped.reverse();wrapped.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(wrapped,this.__chain__)}return this.thru(interceptor)}function wrapperToString(){return this.value()+""}function wrapperValue(){return baseWrapperValue(this.__wrapped__,this.__actions__)}var at=restParam(function(collection,props){return baseAt(collection,baseFlatten(props))});var countBy=createAggregator(function(result,value,key){hasOwnProperty.call(result,key)?++result[key]:result[key]=1});function every(collection,predicate,thisArg){var func=isArray(collection)?arrayEvery:baseEvery;if(thisArg&&isIterateeCall(collection,predicate,thisArg)){predicate=undefined}if(typeof predicate!="function"||thisArg!==undefined){predicate=getCallback(predicate,thisArg,3)}return func(collection,predicate)}function filter(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;predicate=getCallback(predicate,thisArg,3);return func(collection,predicate)}var find=createFind(baseEach);var findLast=createFind(baseEachRight,true);function findWhere(collection,source){return find(collection,baseMatches(source))}var forEach=createForEach(arrayEach,baseEach);var forEachRight=createForEach(arrayEachRight,baseEachRight);var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){result[key].push(value)}else{result[key]=[value]}});function includes(collection,target,fromIndex,guard){var length=collection?getLength(collection):0;if(!isLength(length)){collection=values(collection);length=collection.length}if(typeof fromIndex!="number"||guard&&isIterateeCall(target,fromIndex,guard)){fromIndex=0}else{fromIndex=fromIndex<0?nativeMax(length+fromIndex,0):fromIndex||0}return typeof collection=="string"||!isArray(collection)&&isString(collection)?fromIndex<=length&&collection.indexOf(target,fromIndex)>-1:!!length&&getIndexOf(collection,target,fromIndex)>-1}var indexBy=createAggregator(function(result,value,key){result[key]=value});var invoke=restParam(function(collection,path,args){var index=-1,isFunc=typeof path=="function",isProp=isKey(path),result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value){var func=isFunc?path:isProp&&value!=null?value[path]:undefined;result[++index]=func?func.apply(value,args):invokePath(value,path,args)});return result});function map(collection,iteratee,thisArg){var func=isArray(collection)?arrayMap:baseMap;iteratee=getCallback(iteratee,thisArg,3);return func(collection,iteratee)}var partition=createAggregator(function(result,value,key){result[key?0:1].push(value)},function(){return[[],[]]});function pluck(collection,path){return map(collection,property(path))}var reduce=createReduce(arrayReduce,baseEach);var reduceRight=createReduce(arrayReduceRight,baseEachRight);function reject(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;predicate=getCallback(predicate,thisArg,3);return func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function sample(collection,n,guard){if(guard?isIterateeCall(collection,n,guard):n==null){collection=toIterable(collection);var length=collection.length;return length>0?collection[baseRandom(0,length-1)]:undefined}var index=-1,result=toArray(collection),length=result.length,lastIndex=length-1;n=nativeMin(n<0?0:+n||0,length);while(++index0){result=func.apply(this,arguments)}if(n<=1){func=undefined}return result}}var bind=restParam(function(func,thisArg,partials){var bitmask=BIND_FLAG;if(partials.length){var holders=replaceHolders(partials,bind.placeholder);bitmask|=PARTIAL_FLAG}return createWrapper(func,bitmask,thisArg,partials,holders)});var bindAll=restParam(function(object,methodNames){methodNames=methodNames.length?baseFlatten(methodNames):functions(object);var index=-1,length=methodNames.length;while(++indexwait){complete(trailingCall,maxTimeoutId)}else{timeoutId=setTimeout(delayed,remaining)}}function maxDelayed(){complete(trailing,timeoutId)}function debounced(){args=arguments;stamp=now();thisArg=this;trailingCall=trailing&&(timeoutId||!leading);if(maxWait===false){var leadingCall=leading&&!timeoutId}else{if(!maxTimeoutId&&!leading){lastCalled=stamp}var remaining=maxWait-(stamp-lastCalled),isCalled=remaining<=0||remaining>maxWait;if(isCalled){if(maxTimeoutId){maxTimeoutId=clearTimeout(maxTimeoutId)}lastCalled=stamp;result=func.apply(thisArg,args)}else if(!maxTimeoutId){maxTimeoutId=setTimeout(maxDelayed,remaining)}}if(isCalled&&timeoutId){timeoutId=clearTimeout(timeoutId)}else if(!timeoutId&&wait!==maxWait){timeoutId=setTimeout(delayed,wait)}if(leadingCall){isCalled=true;result=func.apply(thisArg,args)}if(isCalled&&!timeoutId&&!maxTimeoutId){args=thisArg=undefined}return result}debounced.cancel=cancel;return debounced}var defer=restParam(function(func,args){return baseDelay(func,1,args)});var delay=restParam(function(func,wait,args){return baseDelay(func,wait,args)});var flow=createFlow();var flowRight=createFlow(true);function memoize(func,resolver){if(typeof func!="function"||resolver&&typeof resolver!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key)}var result=func.apply(this,args);memoized.cache=cache.set(key,result);return result};memoized.cache=new memoize.Cache;return memoized}var modArgs=restParam(function(func,transforms){transforms=baseFlatten(transforms);if(typeof func!="function"||!arrayEvery(transforms,baseIsFunction)){throw new TypeError(FUNC_ERROR_TEXT)}var length=transforms.length;return restParam(function(args){var index=nativeMin(args.length,length);while(index--){args[index]=transforms[index](args[index])}return func.apply(this,args)})});function negate(predicate){if(typeof predicate!="function"){throw new TypeError(FUNC_ERROR_TEXT)}return function(){return!predicate.apply(this,arguments)}}function once(func){return before(2,func)}var partial=createPartial(PARTIAL_FLAG);var partialRight=createPartial(PARTIAL_RIGHT_FLAG);var rearg=restParam(function(func,indexes){return createWrapper(func,REARG_FLAG,undefined,undefined,undefined,baseFlatten(indexes))});function restParam(func,start){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}start=nativeMax(start===undefined?func.length-1:+start||0,0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);while(++indexother}function gte(value,other){return value>=other}function isArguments(value){return isObjectLike(value)&&isArrayLike(value)&&hasOwnProperty.call(value,"callee")&&!propertyIsEnumerable.call(value,"callee")}var isArray=nativeIsArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)==arrayTag};function isBoolean(value){return value===true||value===false||isObjectLike(value)&&objToString.call(value)==boolTag}function isDate(value){return isObjectLike(value)&&objToString.call(value)==dateTag}function isElement(value){return!!value&&value.nodeType===1&&isObjectLike(value)&&!isPlainObject(value)}function isEmpty(value){if(value==null){return true}if(isArrayLike(value)&&(isArray(value)||isString(value)||isArguments(value)||isObjectLike(value)&&isFunction(value.splice))){return!value.length}return!keys(value).length}function isEqual(value,other,customizer,thisArg){customizer=typeof customizer=="function"?bindCallback(customizer,thisArg,3):undefined;var result=customizer?customizer(value,other):undefined;return result===undefined?baseIsEqual(value,other,customizer):!!result}function isError(value){return isObjectLike(value)&&typeof value.message=="string"&&objToString.call(value)==errorTag}function isFinite(value){return typeof value=="number"&&nativeIsFinite(value)}function isFunction(value){return isObject(value)&&objToString.call(value)==funcTag}function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}function isMatch(object,source,customizer,thisArg){customizer=typeof customizer=="function"?bindCallback(customizer,thisArg,3):undefined;return baseIsMatch(object,getMatchData(source),customizer)}function isNaN(value){return isNumber(value)&&value!=+value}function isNative(value){if(value==null){return false}if(isFunction(value)){return reIsNative.test(fnToString.call(value))}return isObjectLike(value)&&reIsHostCtor.test(value)}function isNull(value){return value===null}function isNumber(value){return typeof value=="number"||isObjectLike(value)&&objToString.call(value)==numberTag}function isPlainObject(value){var Ctor;if(!(isObjectLike(value)&&objToString.call(value)==objectTag&&!isArguments(value))||!hasOwnProperty.call(value,"constructor")&&(Ctor=value.constructor,typeof Ctor=="function"&&!(Ctor instanceof Ctor))){return false}var result;baseForIn(value,function(subValue,key){result=key});return result===undefined||hasOwnProperty.call(value,result)}function isRegExp(value){return isObject(value)&&objToString.call(value)==regexpTag}function isString(value){return typeof value=="string"||isObjectLike(value)&&objToString.call(value)==stringTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}function isUndefined(value){return value===undefined}function lt(value,other){return value0;while(++index=nativeMin(start,end)&&value=0&&string.indexOf(target,position)==position}function escape(string){string=baseToString(string);return string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string}function escapeRegExp(string){string=baseToString(string);return string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,escapeRegExpChar):string||"(?:)"}var kebabCase=createCompounder(function(result,word,index){return result+(index?"-":"")+word.toLowerCase()});function pad(string,length,chars){string=baseToString(string);length=+length;var strLength=string.length;if(strLength>=length||!nativeIsFinite(length)){return string}var mid=(length-strLength)/2,leftLength=nativeFloor(mid),rightLength=nativeCeil(mid);chars=createPadding("",rightLength,chars);return chars.slice(0,leftLength)+string+chars}var padLeft=createPadDir();var padRight=createPadDir(true);function parseInt(string,radix,guard){if(guard?isIterateeCall(string,radix,guard):radix==null){radix=0}else if(radix){radix=+radix}string=trim(string);return nativeParseInt(string,radix||(reHasHexPrefix.test(string)?16:10))}function repeat(string,n){var result="";string=baseToString(string);n=+n;if(n<1||!string||!nativeIsFinite(n)){return result}do{if(n%2){result+=string}n=nativeFloor(n/2);string+=string}while(n);return result}var snakeCase=createCompounder(function(result,word,index){return result+(index?"_":"")+word.toLowerCase()});var startCase=createCompounder(function(result,word,index){return result+(index?" ":"")+(word.charAt(0).toUpperCase()+word.slice(1))});function startsWith(string,target,position){string=baseToString(string);position=position==null?0:nativeMin(position<0?0:+position||0,string.length);return string.lastIndexOf(target,position)==position}function template(string,options,otherOptions){var settings=lodash.templateSettings;if(otherOptions&&isIterateeCall(string,options,otherOptions)){options=otherOptions=undefined}string=baseToString(string);options=assignWith(baseAssign({},otherOptions||options),settings,assignOwnDefaults);var imports=assignWith(baseAssign({},options.imports),settings.imports,assignOwnDefaults),importsKeys=keys(imports),importsValues=baseValues(imports,importsKeys);var isEscaping,isEvaluating,index=0,interpolate=options.interpolate||reNoMatch,source="__p += '";var reDelimiters=RegExp((options.escape||reNoMatch).source+"|"+interpolate.source+"|"+(interpolate===reInterpolate?reEsTemplate:reNoMatch).source+"|"+(options.evaluate||reNoMatch).source+"|$","g");var sourceURL="//# sourceURL="+("sourceURL"in options?options.sourceURL:"lodash.templateSources["+ ++templateCounter+"]")+"\n";string.replace(reDelimiters,function(match,escapeValue,interpolateValue,esTemplateValue,evaluateValue,offset){interpolateValue||(interpolateValue=esTemplateValue);source+=string.slice(index,offset).replace(reUnescapedString,escapeStringChar);if(escapeValue){isEscaping=true;source+="' +\n__e("+escapeValue+") +\n'"}if(evaluateValue){isEvaluating=true;source+="';\n"+evaluateValue+";\n__p += '"}if(interpolateValue){source+="' +\n((__t = ("+interpolateValue+")) == null ? '' : __t) +\n'"}index=offset+match.length;return match});source+="';\n";var variable=options.variable;if(!variable){source="with (obj) {\n"+source+"\n}\n"}source=(isEvaluating?source.replace(reEmptyStringLeading,""):source).replace(reEmptyStringMiddle,"$1").replace(reEmptyStringTrailing,"$1;");source="function("+(variable||"obj")+") {\n"+(variable?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(isEscaping?", __e = _.escape":"")+(isEvaluating?", __j = Array.prototype.join;\n"+"function print() { __p += __j.call(arguments, '') }\n":";\n")+source+"return __p\n}";var result=attempt(function(){return Function(importsKeys,sourceURL+"return "+source).apply(undefined,importsValues)});result.source=source;if(isError(result)){throw result}return result}function trim(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(trimmedLeftIndex(string),trimmedRightIndex(string)+1)}chars=chars+"";return string.slice(charsLeftIndex(string,chars),charsRightIndex(string,chars)+1)}function trimLeft(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(trimmedLeftIndex(string))}return string.slice(charsLeftIndex(string,chars+""))}function trimRight(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(0,trimmedRightIndex(string)+1)}return string.slice(0,charsRightIndex(string,chars+"")+1)}function trunc(string,options,guard){if(guard&&isIterateeCall(string,options,guard)){options=undefined}var length=DEFAULT_TRUNC_LENGTH,omission=DEFAULT_TRUNC_OMISSION;if(options!=null){if(isObject(options)){var separator="separator"in options?options.separator:separator;length="length"in options?+options.length||0:length;omission="omission"in options?baseToString(options.omission):omission}else{length=+options||0}}string=baseToString(string);if(length>=string.length){return string}var end=length-omission.length;if(end<1){return omission}var result=string.slice(0,end);if(separator==null){return result+omission}if(isRegExp(separator)){if(string.slice(end).search(separator)){var match,newEnd,substring=string.slice(0,end);if(!separator.global){separator=RegExp(separator.source,(reFlags.exec(separator)||"")+"g")}separator.lastIndex=0;while(match=separator.exec(substring)){newEnd=match.index}result=result.slice(0,newEnd==null?end:newEnd)}}else if(string.indexOf(separator,end)!=end){var index=result.lastIndexOf(separator);if(index>-1){result=result.slice(0,index)}}return result+omission}function unescape(string){string=baseToString(string);return string&&reHasEscapedHtml.test(string)?string.replace(reEscapedHtml,unescapeHtmlChar):string}function words(string,pattern,guard){if(guard&&isIterateeCall(string,pattern,guard)){pattern=undefined}string=baseToString(string);return string.match(pattern||reWords)||[]}var attempt=restParam(function(func,args){try{return func.apply(undefined,args)}catch(e){return isError(e)?e:new Error(e)}});function callback(func,thisArg,guard){if(guard&&isIterateeCall(func,thisArg,guard)){thisArg=undefined}return isObjectLike(func)?matches(func):baseCallback(func,thisArg)}function constant(value){return function(){return value}}function identity(value){return value}function matches(source){return baseMatches(baseClone(source,true))}function matchesProperty(path,srcValue){return baseMatchesProperty(path,baseClone(srcValue,true))}var method=restParam(function(path,args){return function(object){return invokePath(object,path,args)}});var methodOf=restParam(function(object,args){return function(path){return invokePath(object,path,args)}});function mixin(object,source,options){if(options==null){var isObj=isObject(source),props=isObj?keys(source):undefined,methodNames=props&&props.length?baseFunctions(source,props):undefined;if(!(methodNames?methodNames.length:isObj)){methodNames=false;options=source;source=object;object=this}}if(!methodNames){methodNames=baseFunctions(source,keys(source))}var chain=true,index=-1,isFunc=isFunction(object),length=methodNames.length;if(options===false){chain=false}else if(isObject(options)&&"chain"in options){chain=options.chain}while(++index0||end<0)){return new LazyWrapper(result)}if(start<0){result=result.takeRight(-start)}else if(start){result=result.drop(start)}if(end!==undefined){end=+end||0;result=end<0?result.dropRight(-end):result.take(end-start)}return result};LazyWrapper.prototype.takeRightWhile=function(predicate,thisArg){return this.reverse().takeWhile(predicate,thisArg).reverse()};LazyWrapper.prototype.toArray=function(){return this.take(POSITIVE_INFINITY)};baseForOwn(LazyWrapper.prototype,function(func,methodName){var checkIteratee=/^(?:filter|map|reject)|While$/.test(methodName),retUnwrapped=/^(?:first|last)$/.test(methodName),lodashFunc=lodash[retUnwrapped?"take"+(methodName=="last"?"Right":""):methodName];if(!lodashFunc){return}lodash.prototype[methodName]=function(){var args=retUnwrapped?[1]:arguments,chainAll=this.__chain__,value=this.__wrapped__,isHybrid=!!this.__actions__.length,isLazy=value instanceof LazyWrapper,iteratee=args[0],useLazy=isLazy||isArray(value);if(useLazy&&checkIteratee&&typeof iteratee=="function"&&iteratee.length!=1){isLazy=useLazy=false}var interceptor=function(value){return retUnwrapped&&chainAll?lodashFunc(value,1)[0]:lodashFunc.apply(undefined,arrayPush([value],args))};var action={func:thru,args:[interceptor],thisArg:undefined},onlyLazy=isLazy&&!isHybrid;if(retUnwrapped&&!chainAll){if(onlyLazy){value=value.clone();value.__actions__.push(action);return func.call(value)}return lodashFunc.call(undefined,this.value())[0]}if(!retUnwrapped&&useLazy){value=onlyLazy?value:new LazyWrapper(this);var result=func.apply(value,args);result.__actions__.push(action);return new LodashWrapper(result,chainAll)}return this.thru(interceptor)}});arrayEach(["join","pop","push","replace","shift","sort","splice","split","unshift"],function(methodName){var func=(/^(?:replace|split)$/.test(methodName)?stringProto:arrayProto)[methodName],chainName=/^(?:push|sort|unshift)$/.test(methodName)?"tap":"thru",retUnwrapped=/^(?:join|pop|replace|shift)$/.test(methodName);lodash.prototype[methodName]=function(){var args=arguments;if(retUnwrapped&&!this.__chain__){return func.apply(this.value(),args)}return this[chainName](function(value){return func.apply(value,args)})}});baseForOwn(LazyWrapper.prototype,function(func,methodName){var lodashFunc=lodash[methodName];if(lodashFunc){var key=lodashFunc.name,names=realNames[key]||(realNames[key]=[]);names.push({name:methodName,func:lodashFunc})}});realNames[createHybridWrapper(undefined,BIND_KEY_FLAG).name]=[{name:"wrapper",func:undefined}];LazyWrapper.prototype.clone=lazyClone;LazyWrapper.prototype.reverse=lazyReverse;LazyWrapper.prototype.value=lazyValue;lodash.prototype.chain=wrapperChain;lodash.prototype.commit=wrapperCommit;lodash.prototype.concat=wrapperConcat;lodash.prototype.plant=wrapperPlant;lodash.prototype.reverse=wrapperReverse;lodash.prototype.toString=wrapperToString;lodash.prototype.run=lodash.prototype.toJSON=lodash.prototype.valueOf=lodash.prototype.value=wrapperValue;lodash.prototype.collect=lodash.prototype.map;lodash.prototype.head=lodash.prototype.first;lodash.prototype.select=lodash.prototype.filter;lodash.prototype.tail=lodash.prototype.rest;return lodash}var _=runInContext();if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){root._=_;define(function(){return _})}else if(freeExports&&freeModule){if(moduleExports){(freeModule.exports=_)._=_}else{freeExports._=_}}else{root._=_}}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],3:[function(require,module,exports){(function(window,document,undefined){var _MAP={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"};var _KEYCODE_MAP={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};var _SHIFT_MAP={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"};var _SPECIAL_ALIASES={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"};var _REVERSE_MAP;for(var i=1;i<20;++i){_MAP[111+i]="f"+i}for(i=0;i<=9;++i){_MAP[i+96]=i}function _addEvent(object,type,callback){if(object.addEventListener){object.addEventListener(type,callback,false);return}object.attachEvent("on"+type,callback)}function _characterFromEvent(e){if(e.type=="keypress"){var character=String.fromCharCode(e.which);if(!e.shiftKey){character=character.toLowerCase()}return character}if(_MAP[e.which]){return _MAP[e.which]}if(_KEYCODE_MAP[e.which]){return _KEYCODE_MAP[e.which]}return String.fromCharCode(e.which).toLowerCase()}function _modifiersMatch(modifiers1,modifiers2){return modifiers1.sort().join(",")===modifiers2.sort().join(",")}function _eventModifiers(e){var modifiers=[];if(e.shiftKey){modifiers.push("shift")}if(e.altKey){modifiers.push("alt")}if(e.ctrlKey){modifiers.push("ctrl")}if(e.metaKey){modifiers.push("meta")}return modifiers}function _preventDefault(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=false}function _stopPropagation(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=true}function _isModifier(key){return key=="shift"||key=="ctrl"||key=="alt"||key=="meta"}function _getReverseMap(){if(!_REVERSE_MAP){_REVERSE_MAP={};for(var key in _MAP){if(key>95&&key<112){continue}if(_MAP.hasOwnProperty(key)){_REVERSE_MAP[_MAP[key]]=key}}}return _REVERSE_MAP}function _pickBestAction(key,modifiers,action){if(!action){action=_getReverseMap()[key]?"keydown":"keypress"}if(action=="keypress"&&modifiers.length){action="keydown"}return action}function _keysFromString(combination){if(combination==="+"){return["+"]}combination=combination.replace(/\+{2}/g,"+plus");return combination.split("+")}function _getKeyInfo(combination,action){var keys;var key;var i;var modifiers=[];keys=_keysFromString(combination);for(i=0;i1){_bindSequence(combination,sequence,callback,action);return}info=_getKeyInfo(combination,action);self._callbacks[info.key]=self._callbacks[info.key]||[];_getMatches(info.key,info.modifiers,{type:info.action},sequenceName,combination,level);self._callbacks[info.key][sequenceName?"unshift":"push"]({callback:callback,modifiers:info.modifiers,action:info.action,seq:sequenceName,level:level,combo:combination})}self._bindMultiple=function(combinations,callback,action){for(var i=0;i-1){return false}if(_belongsTo(element,self.target)){return false}return element.tagName=="INPUT"||element.tagName=="SELECT"||element.tagName=="TEXTAREA"||element.isContentEditable};Mousetrap.prototype.handleKey=function(){var self=this;return self._handleKey.apply(self,arguments)};Mousetrap.init=function(){var documentMousetrap=Mousetrap(document);for(var method in documentMousetrap){if(method.charAt(0)!=="_"){Mousetrap[method]=function(method){return function(){return documentMousetrap[method].apply(documentMousetrap,arguments)}}(method)}}};Mousetrap.init();window.Mousetrap=Mousetrap;if(typeof module!=="undefined"&&module.exports){module.exports=Mousetrap}if(typeof define==="function"&&define.amd){define(function(){return Mousetrap})}})(window,document)},{}],4:[function(require,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,key;function error(type){throw RangeError(errors[type])}function map(array,fn){var length=array.length;var result=[];while(length--){result[length]=fn(array[length])}return result}function mapDomain(string,fn){var parts=string.split("@");var result="";if(parts.length>1){result=parts[0]+"@";string=parts[1]}string=string.replace(regexSeparators,".");var labels=string.split(".");var encoded=map(labels,fn).join(".");return result+encoded}function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter=55296&&value<=56319&&counter65535){value-=65536;output+=stringFromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=stringFromCharCode(value);return output}).join("")}function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)}function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,baseMinusT;basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(j=0;j=128){error("not-basic")}output.push(input.charCodeAt(j))}for(index=basic>0?basic+1:0;index=inputLength){error("invalid-input")}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error("overflow")}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digitfloor(maxInt/baseMinusT)){error("overflow")}w*=baseMinusT}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],inputLength,handledCPCountPlusOne,baseMinusT,qMinusT;input=ucs2decode(input);inputLength=input.length;n=initialN;delta=0;bias=initialBias;for(j=0;j=n&¤tValuefloor((maxInt-delta)/handledCPCountPlusOne)){error("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;jmaxInt){error("overflow")}if(currentValue==n){for(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q0&&len>maxKeys){len=maxKeys}for(var i=0;i=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1)}else{kstr=x;vstr=""}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v}else if(isArray(obj[k])){obj[k].push(v)}else{obj[k]=[obj[k],v]}}return obj};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"}},{}],8:[function(require,module,exports){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){sep=sep||"&";eq=eq||"=";if(obj===null){obj=undefined}if(typeof obj==="object"){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep)}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]))}}).join(sep)}if(!name)return"";return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj))};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i",'"',"`"," ","\r","\n","\t"],unwise=["{","}","|","\\","^","`"].concat(delims),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnameMaxLen=255,hostnamePartPattern=/^[a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:true,"javascript:":true},hostlessProtocol={javascript:true,"javascript:":true},slashedProtocol={http:true,https:true,ftp:true,gopher:true,file:true,"http:":true,"https:":true,"ftp:":true,"gopher:":true,"file:":true},querystring=require("querystring");function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&isObject(url)&&url instanceof Url)return url;var u=new Url;u.parse(url,parseQueryString,slashesDenoteHost);return u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!isString(url)){throw new TypeError("Parameter 'url' must be a string, not "+typeof url)}var rest=url;rest=rest.trim();var proto=protocolPattern.exec(rest);if(proto){proto=proto[0];var lowerProto=proto.toLowerCase();this.protocol=lowerProto;rest=rest.substr(proto.length)}if(slashesDenoteHost||proto||rest.match(/^\/\/[^@\/]+@[^@\/]+/)){var slashes=rest.substr(0,2)==="//";if(slashes&&!(proto&&hostlessProtocol[proto])){rest=rest.substr(2);this.slashes=true}}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){var hostEnd=-1;for(var i=0;i127){newpart+="x"}else{newpart+=part[j]}}if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2])}if(notHost.length){rest="/"+notHost.join(".")+rest}this.hostname=validParts.join(".");break}}}}if(this.hostname.length>hostnameMaxLen){this.hostname=""}else{this.hostname=this.hostname.toLowerCase()}if(!ipv6Hostname){var domainArray=this.hostname.split(".");var newOut=[];for(var i=0;i0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}result.search=relative.search;result.query=relative.query;if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.href=result.format();return result}if(!srcPath.length){result.pathname=null;if(result.search){result.path="/"+result.search}else{result.path=null}result.href=result.format();return result}var last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host)&&(last==="."||last==="..")||last==="";var up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last=="."){srcPath.splice(i,1)}else if(last===".."){srcPath.splice(i,1);up++}else if(up){srcPath.splice(i,1);up--}}if(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift("..")}}if(mustEndAbs&&srcPath[0]!==""&&(!srcPath[0]||srcPath[0].charAt(0)!=="/")){srcPath.unshift("")}if(hasTrailingSlash&&srcPath.join("/").substr(-1)!=="/"){srcPath.push("")}var isAbsolute=srcPath[0]===""||srcPath[0]&&srcPath[0].charAt(0)==="/";if(psychotic){result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"";var authInHost=result.host&&result.host.indexOf("@")>0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift("")}if(!srcPath.length){result.pathname=null;result.path=null}else{result.pathname=srcPath.join("/")}if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==":"){this.port=port.substr(1)}host=host.substr(0,host.length-port.length)}if(host)this.hostname=host};function isString(arg){return typeof arg==="string"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isNull(arg){return arg===null}function isNullOrUndefined(arg){return arg==null}},{punycode:6,querystring:9}],11:[function(require,module,exports){var $=require("jquery");function toggleDropdown(e){var $dropdown=$(e.currentTarget).parent().find(".dropdown-menu");$dropdown.toggleClass("open");e.stopPropagation();e.preventDefault()}function closeDropdown(e){$(".dropdown-menu").removeClass("open")}function init(){$(document).on("click",".toggle-dropdown",toggleDropdown);$(document).on("click",".dropdown-menu",function(e){e.stopPropagation()});$(document).on("click",closeDropdown)}module.exports={init:init}},{jquery:1}],12:[function(require,module,exports){var $=require("jquery");module.exports=$({})},{jquery:1}],13:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var storage=require("./storage");var dropdown=require("./dropdown");var events=require("./events");var state=require("./state");var keyboard=require("./keyboard");var navigation=require("./navigation");var sidebar=require("./sidebar");var toolbar=require("./toolbar");function start(config){sidebar.init();keyboard.init();dropdown.init();navigation.init();toolbar.createButton({index:0,icon:"fa fa-align-justify",label:"Toggle Sidebar",onClick:function(e){e.preventDefault();sidebar.toggle()}});events.trigger("start",config);navigation.notify()}var gitbook={start:start,events:events,state:state,toolbar:toolbar,sidebar:sidebar,storage:storage,keyboard:keyboard};var MODULES={gitbook:gitbook,jquery:$,lodash:_};window.gitbook=gitbook;window.$=$;window.jQuery=$;gitbook.require=function(mods,fn){mods=_.map(mods,function(mod){mod=mod.toLowerCase();if(!MODULES[mod]){throw new Error("GitBook module "+mod+" doesn't exist")}return MODULES[mod]});fn.apply(null,mods)};module.exports={}},{"./dropdown":11,"./events":12,"./keyboard":14,"./navigation":16,"./sidebar":18,"./state":19,"./storage":20,"./toolbar":21,jquery:1,lodash:2}],14:[function(require,module,exports){var Mousetrap=require("mousetrap");var navigation=require("./navigation");var sidebar=require("./sidebar");function bindShortcut(keys,fn){Mousetrap.bind(keys,function(e){fn();return false})}function init(){bindShortcut(["right"],function(e){navigation.goNext()});bindShortcut(["left"],function(e){navigation.goPrev()});bindShortcut(["s"],function(e){sidebar.toggle()})}module.exports={init:init,bind:bindShortcut}},{"./navigation":16,"./sidebar":18,mousetrap:3}],15:[function(require,module,exports){var state=require("./state");function showLoading(p){state.$book.addClass("is-loading");p.always(function(){state.$book.removeClass("is-loading")});return p}module.exports={show:showLoading}},{"./state":19}],16:[function(require,module,exports){var $=require("jquery");var url=require("url");var events=require("./events");var state=require("./state");var loading=require("./loading");var usePushState=typeof history.pushState!=="undefined";function handleNavigation(relativeUrl,push){var uri=url.resolve(window.location.pathname,relativeUrl);notifyPageChange();location.href=relativeUrl;return}function updateNavigationPosition(){var bodyInnerWidth,pageWrapperWidth;bodyInnerWidth=parseInt($(".body-inner").css("width"),10);pageWrapperWidth=parseInt($(".page-wrapper").css("width"),10);$(".navigation-next").css("margin-right",bodyInnerWidth-pageWrapperWidth+"px")}function notifyPageChange(){events.trigger("page.change")}function preparePage(notify){var $bookBody=$(".book-body");var $bookInner=$bookBody.find(".body-inner");var $pageWrapper=$bookInner.find(".page-wrapper");updateNavigationPosition();$bookInner.scrollTop(0);$bookBody.scrollTop(0);if(notify!==false)notifyPageChange()}function isLeftClickEvent(e){return e.button===0}function isModifiedEvent(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function handlePagination(e){if(isModifiedEvent(e)||!isLeftClickEvent(e)){return}e.stopPropagation();e.preventDefault();var url=$(this).attr("href");if(url)handleNavigation(url,true)}function goNext(){var url=$(".navigation-next").attr("href");if(url)handleNavigation(url,true)}function goPrev(){var url=$(".navigation-prev").attr("href");if(url)handleNavigation(url,true)}function init(){$.ajaxSetup({});if(location.protocol!=="file:"){history.replaceState({path:window.location.href},"")}window.onpopstate=function(event){if(event.state===null){return}return handleNavigation(event.state.path,false)};$(document).on("click",".navigation-prev",handlePagination);$(document).on("click",".navigation-next",handlePagination);$(document).on("click",".summary [data-path] a",handlePagination);$(window).resize(updateNavigationPosition);preparePage(false)}module.exports={init:init,goNext:goNext,goPrev:goPrev,notify:notifyPageChange}},{"./events":12,"./loading":15,"./state":19,jquery:1,url:10}],17:[function(require,module,exports){module.exports={isMobile:function(){return document.body.clientWidth<=600}}},{}],18:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var storage=require("./storage");var platform=require("./platform");var state=require("./state");function toggleSidebar(_state,animation){if(state!=null&&isOpen()==_state)return;if(animation==null)animation=true;state.$book.toggleClass("without-animation",!animation);state.$book.toggleClass("with-summary",_state);storage.set("sidebar",isOpen())}function isOpen(){return state.$book.hasClass("with-summary")}function init(){if(platform.isMobile()){toggleSidebar(false,false)}else{toggleSidebar(storage.get("sidebar",true),false)}$(document).on("click",".book-summary li.chapter a",function(e){if(platform.isMobile())toggleSidebar(false,false)})}function filterSummary(paths){var $summary=$(".book-summary");$summary.find("li").each(function(){var path=$(this).data("path");var st=paths==null||_.contains(paths,path);$(this).toggle(st);if(st)$(this).parents("li").show()})}module.exports={init:init,isOpen:isOpen,toggle:toggleSidebar,filter:filterSummary}},{"./platform":17,"./state":19,"./storage":20,jquery:1,lodash:2}],19:[function(require,module,exports){var $=require("jquery");var url=require("url");var path=require("path");var state={};state.update=function(dom){var $book=$(dom.find(".book"));state.$book=$book;state.level=$book.data("level");state.basePath=$book.data("basepath");state.innerLanguage=$book.data("innerlanguage");state.revision=$book.data("revision");state.filepath=$book.data("filepath");state.chapterTitle=$book.data("chapter-title");state.root=url.resolve(location.protocol+"//"+location.host,path.dirname(path.resolve(location.pathname.replace(/\/$/,"/index.html"),state.basePath))).replace(/\/?$/,"/");state.bookRoot=state.innerLanguage?url.resolve(state.root,".."):state.root};state.update($);module.exports=state},{jquery:1,path:4,url:10}],20:[function(require,module,exports){var baseKey="";module.exports={setBaseKey:function(key){baseKey=key},set:function(key,value){key=baseKey+":"+key;try{sessionStorage[key]=JSON.stringify(value)}catch(e){}},get:function(key,def){key=baseKey+":"+key;if(sessionStorage[key]===undefined)return def;try{var v=JSON.parse(sessionStorage[key]);return v==null?def:v}catch(err){return sessionStorage[key]||def}},remove:function(key){key=baseKey+":"+key;sessionStorage.removeItem(key)}}},{}],21:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var events=require("./events");var buttons=[];function insertAt(parent,selector,index,element){var lastIndex=parent.children(selector).length;if(index<0){index=Math.max(0,lastIndex+1+index)}parent.append(element);if(index",{class:"dropdown-menu",html:'

'});if(_.isString(dropdown)){$menu.append(dropdown)}else{var groups=_.map(dropdown,function(group){if(_.isArray(group))return group;else return[group]});_.each(groups,function(group){var $group=$("
",{class:"buttons"});var sizeClass="size-"+group.length;_.each(group,function(btn){btn=_.defaults(btn||{},{text:"",className:"",onClick:defaultOnClick});var $btn=$("'; + var clipboard; + + gitbook.events.bind("page.change", function() { + + if (!ClipboardJS.isSupported()) return; + + // the page.change event is thrown twice: before and after the page changes + if (clipboard) { + // clipboard is already defined but we are on the same page + if (clipboard._prevPage === window.location.pathname) return; + // clipboard is already defined and url path change + // we can deduct that we are before page changes + clipboard.destroy(); // destroy the previous events listeners + clipboard = undefined; // reset the clipboard object + return; + } + + $(copyButton).prependTo("div.sourceCode"); + + clipboard = new ClipboardJS(".copy-to-clipboard-button", { + text: function(trigger) { + return trigger.parentNode.textContent; + } + }); + + clipboard._prevPage = window.location.pathname + + }); + +}); diff --git a/docs/libs/gitbook-2.6.7/js/plugin-fontsettings.js b/docs/libs/gitbook-2.6.7/js/plugin-fontsettings.js new file mode 100644 index 0000000..a70f0fb --- /dev/null +++ b/docs/libs/gitbook-2.6.7/js/plugin-fontsettings.js @@ -0,0 +1,152 @@ +gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { + var fontState; + + var THEMES = { + "white": 0, + "sepia": 1, + "night": 2 + }; + + var FAMILY = { + "serif": 0, + "sans": 1 + }; + + // Save current font settings + function saveFontSettings() { + gitbook.storage.set("fontState", fontState); + update(); + } + + // Increase font size + function enlargeFontSize(e) { + e.preventDefault(); + if (fontState.size >= 4) return; + + fontState.size++; + saveFontSettings(); + }; + + // Decrease font size + function reduceFontSize(e) { + e.preventDefault(); + if (fontState.size <= 0) return; + + fontState.size--; + saveFontSettings(); + }; + + // Change font family + function changeFontFamily(index, e) { + e.preventDefault(); + + fontState.family = index; + saveFontSettings(); + }; + + // Change type of color + function changeColorTheme(index, e) { + e.preventDefault(); + + var $book = $(".book"); + + if (fontState.theme !== 0) + $book.removeClass("color-theme-"+fontState.theme); + + fontState.theme = index; + if (fontState.theme !== 0) + $book.addClass("color-theme-"+fontState.theme); + + saveFontSettings(); + }; + + function update() { + var $book = gitbook.state.$book; + + $(".font-settings .font-family-list li").removeClass("active"); + $(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active"); + + $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); + $book.addClass("font-size-"+fontState.size); + $book.addClass("font-family-"+fontState.family); + + if(fontState.theme !== 0) { + $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); + $book.addClass("color-theme-"+fontState.theme); + } + }; + + function init(config) { + var $bookBody, $book; + + //Find DOM elements. + $book = gitbook.state.$book; + $bookBody = $book.find(".book-body"); + + // Instantiate font state object + fontState = gitbook.storage.get("fontState", { + size: config.size || 2, + family: FAMILY[config.family || "sans"], + theme: THEMES[config.theme || "white"] + }); + + update(); + }; + + + gitbook.events.bind("start", function(e, config) { + var opts = config.fontsettings; + if (!opts) return; + + // Create buttons in toolbar + gitbook.toolbar.createButton({ + icon: 'fa fa-font', + label: 'Font Settings', + className: 'font-settings', + dropdown: [ + [ + { + text: 'A', + className: 'font-reduce', + onClick: reduceFontSize + }, + { + text: 'A', + className: 'font-enlarge', + onClick: enlargeFontSize + } + ], + [ + { + text: 'Serif', + onClick: _.partial(changeFontFamily, 0) + }, + { + text: 'Sans', + onClick: _.partial(changeFontFamily, 1) + } + ], + [ + { + text: 'White', + onClick: _.partial(changeColorTheme, 0) + }, + { + text: 'Sepia', + onClick: _.partial(changeColorTheme, 1) + }, + { + text: 'Night', + onClick: _.partial(changeColorTheme, 2) + } + ] + ] + }); + + + // Init current settings + init(opts); + }); +}); + + diff --git a/docs/libs/gitbook-2.6.7/js/plugin-search.js b/docs/libs/gitbook-2.6.7/js/plugin-search.js new file mode 100644 index 0000000..747fcce --- /dev/null +++ b/docs/libs/gitbook-2.6.7/js/plugin-search.js @@ -0,0 +1,270 @@ +gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { + var index = null; + var fuse = null; + var _search = {engine: 'lunr', opts: {}}; + var $searchInput, $searchLabel, $searchForm; + var $highlighted = [], hi, hiOpts = { className: 'search-highlight' }; + var collapse = false, toc_visible = []; + + function init(config) { + // Instantiate search settings + _search = gitbook.storage.get("search", { + engine: config.search.engine || 'lunr', + opts: config.search.options || {}, + }); + }; + + // Save current search settings + function saveSearchSettings() { + gitbook.storage.set("search", _search); + } + + // Use a specific index + function loadIndex(data) { + // [Yihui] In bookdown, I use a character matrix to store the chapter + // content, and the index is dynamically built on the client side. + // Gitbook prebuilds the index data instead: https://github.com/GitbookIO/plugin-search + // We can certainly do that via R packages V8 and jsonlite, but let's + // see how slow it really is before improving it. On the other hand, + // lunr cannot handle non-English text very well, e.g. the default + // tokenizer cannot deal with Chinese text, so we may want to replace + // lunr with a dumb simple text matching approach. + if (_search.engine === 'lunr') { + index = lunr(function () { + this.ref('url'); + this.field('title', { boost: 10 }); + this.field('body'); + }); + data.map(function(item) { + index.add({ + url: item[0], + title: item[1], + body: item[2] + }); + }); + return; + } + fuse = new Fuse(data.map((_data => { + return { + url: _data[0], + title: _data[1], + body: _data[2] + }; + })), Object.assign( + { + includeScore: true, + threshold: 0.1, + ignoreLocation: true, + keys: ["title", "body"] + }, + _search.opts + )); + } + + // Fetch the search index + function fetchIndex() { + return $.getJSON(gitbook.state.basePath+"/search_index.json") + .then(loadIndex); // [Yihui] we need to use this object later + } + + // Search for a term and return results + function search(q) { + let results = []; + switch (_search.engine) { + case 'fuse': + if (!fuse) return; + results = fuse.search(q).map(function(result) { + var parts = result.item.url.split('#'); + return { + path: parts[0], + hash: parts[1] + }; + }); + break; + case 'lunr': + default: + if (!index) return; + results = _.chain(index.search(q)).map(function(result) { + var parts = result.ref.split("#"); + return { + path: parts[0], + hash: parts[1] + }; + }) + .value(); + } + + // [Yihui] Highlight the search keyword on current page + $highlighted = $('.page-inner') + .unhighlight(hiOpts).highlight(q, hiOpts).find('span.search-highlight'); + scrollToHighlighted(0); + + return results; + } + + // [Yihui] Scroll the chapter body to the i-th highlighted string + function scrollToHighlighted(d) { + var n = $highlighted.length; + hi = hi === undefined ? 0 : hi + d; + // navignate to the previous/next page in the search results if reached the top/bottom + var b = hi < 0; + if (d !== 0 && (b || hi >= n)) { + var path = currentPath(), n2 = toc_visible.length; + if (n2 === 0) return; + for (var i = b ? 0 : n2; (b && i < n2) || (!b && i >= 0); i += b ? 1 : -1) { + if (toc_visible.eq(i).data('path') === path) break; + } + i += b ? -1 : 1; + if (i < 0) i = n2 - 1; + if (i >= n2) i = 0; + var lnk = toc_visible.eq(i).find('a[href$=".html"]'); + if (lnk.length) lnk[0].click(); + return; + } + if (n === 0) return; + var $p = $highlighted.eq(hi); + $p[0].scrollIntoView(); + $highlighted.css('background-color', ''); + // an orange background color on the current item and removed later + $p.css('background-color', 'orange'); + setTimeout(function() { + $p.css('background-color', ''); + }, 2000); + } + + function currentPath() { + var href = window.location.pathname; + href = href.substr(href.lastIndexOf('/') + 1); + return href === '' ? 'index.html' : href; + } + + // Create search form + function createForm(value) { + if ($searchForm) $searchForm.remove(); + if ($searchLabel) $searchLabel.remove(); + if ($searchInput) $searchInput.remove(); + + $searchForm = $('
', { + 'class': 'book-search', + 'role': 'search' + }); + + $searchLabel = $('",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0New choose Boston Home Sales Sample Data. ’ll able see spatial distribution parameter. bottom left ’ll see information number observations.\nFigure 3.1: Opening dataset\n\nFigure 3.2: Boston Housing 1970s\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"specific-od-data-storage-in-gis","chapter":"3 Working with graphics in GeoDa","heading":"3.2 Specific od data storage in GIS","text":"understand observations variables stand find facts ways storing data GIS. GIS object dataset consists 2 parts: geometric (see ) semantic (responsible property object represented row table). , semantic part table, line object dataset column contains characteristic object. means number observations number objects (rows) number variables stands number object characteristics (columns).\nFigure 3.3: Storing data GIS\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"graphic-types-in-geoda","chapter":"3 Working with graphics in GeoDa","heading":"3.3 Graphic types in GeoDa","text":"’re 8 types graphics GeoDA: Histogram, Box Plot, Scatter Plot, Scatter Plot, Matrix, Bubble Chart, 3D Scatter Plot, Conditional Plot\nFigure 3.4: Types graphics GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"histogram","chapter":"3 Working with graphics in GeoDa","heading":"3.3.1 Histogram","text":"Histogram shows meanings one variable chosen object. push histogram button control panel choose variable need. want create histogram objects, concrete ones, choose either table map. case histogram show meanings variable objects chosen ones. open table, push button control panel. chose colors histogram export image, click right button choose option need. works types graphics GeoDa.\nFigure 3.5: Creating Histogram GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"box-plot","chapter":"3 Working with graphics in GeoDa","heading":"3.3.2 Box plot","text":"Boxplots created represent distribution numeric variable. graphic reflects maximum minimum values, median, first last quantiles p-values time. create boxplot, also just push button control panel choose variable need. Boxplot also numeric characteristics easier interpretation.\nFigure 3.6: Creating Box plot GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"scatter-plot","chapter":"3 Working with graphics in GeoDa","heading":"3.3.3 Scatter plot","text":"Scatter plot based using Cartesian coordinates display values typically 2 variables dataset. ’re 3 types Scatter plots GeoDa. create , still push specified button control panel create variables. classical scatter plot ’ll choose 2 . 3D Scatter plot uses 3-dimensial representation 3 variables. Finally, Scatter plot Matrix grid scatter plots used visualize bivariate relationships combinations variables. can choose 2 3 variables comparison, need. create scatter plots, also just push button control panel choose variable need.\nFigure 3.7: Creating Scatterplot Scatterplot Matrix GeoDa\n\nFigure 3.8: Creating 3D Scatterplot GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"bubble-chart","chapter":"3 Working with graphics in GeoDa","heading":"3.3.4 Bubble Chart","text":"bubble chart type data visualization uses circles (bubbles) represent data points two-dimensional plot. similar scatter plot, uses bubbles instead dots. Typically, bubble chart shows values three numeric variables, circle representing observation position plot indicating values two variables. create bubble chart, also push button control panel choose variable need.\nFigure 3.9: Creating Bubble Chart GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"parallel-coordinates-plot","chapter":"3 Working with graphics in GeoDa","heading":"3.3.5 Parallel coordinates plot","text":"Parallel coordinates plot common way visualizing analyzing high-dimensional datasets. point n-dimensional space represented polyline vertices parallel axes position vertex corresponds coordinate point. create , push button control panel choose variable need.\nFigure 3.10: Creating Parallel coordinates plot GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"conditional-plot","chapter":"3 Working with graphics in GeoDa","heading":"3.3.6 Conditional plot","text":"Conditional plot consists two variables conditional value third variable. can create map, histogram, scatter plot boxplot, using button control panel. ’ll choose 3 variables get 9 graphics, showing dependencies.\nFigure 3.11: Creating Conditional plot GeoDa\n","code":""},{"path":"working-with-graphics-in-geoda.html","id":"practical-exercise","chapter":"3 Working with graphics in GeoDa","heading":"3.4 Practical exercise","text":"check lesson built 3 Graphics observations towno=27.\n1. create histogram analyze distances Boston employment centers (dis);\n2. create histogram analyze per capita crime (crim) fix *.txt file minimum, maximum, mean median values variable;\n3. create bubble chart analyze dependencies variables age (x-axes), dis (y-axes), crim (bubble-size) indus (bubble-color).\nresult task must represented txt-file statistical parameters 3 png-files graphics.","code":""},{"path":"thematic-maps-in-geoda.html","id":"thematic-maps-in-geoda","chapter":"4 Thematic maps in Geoda","heading":"4 Thematic maps in Geoda","text":"today’s lesson make simple thematic maps using GeoDa software. explore thematic mapping toolkit using Chicago Community Area dataset large attribute table. allows us create huge variety thematic maps.\nFigure 3.1: Chicago Community Area dataset\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"what-is-a-thematic-map","chapter":"4 Thematic maps in Geoda","heading":"4.1 What is a thematic map?","text":"first, thematic map? Roughly speaking, thematic map map certain theme. ’s interesting see kind geographical pattern particular subject matter ’s use maps. GeoDa allows us create different kinds thematic maps. , let’s focus . lesson, use interface shown left part slide.\nFigure 3.2: Thematic maooing toolkit\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"control-panel","chapter":"4 Thematic maps in Geoda","heading":"4.2 Control panel","text":"window opens, notice several icons top. tools used select elements map, invert selection, zoom zoom . Also can add basemap. tools details describe later.\nFigure 3.3: Control panel\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"quantile-map","chapter":"4 Thematic maps in Geoda","heading":"4.3 Quantile map","text":"Now, let’s explore mapping options. can create map using quantiles, dividing entire data array equal parts. opportunity choose number parts, ranging two ten.kind map effective accurately depicting distribution indicator. dividing equal intervals, can easily identify geographical patterns phenomenon’s distribution throughout territory.\nFigure 3.4: Quantile map\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"percentile-map","chapter":"4 Thematic maps in Geoda","heading":"4.4 Percentile map","text":"Another possible choropleth percentile map, enables visualization percentage distribution variable region.map suitable displaying non-uniform distribution.\nFigure 3.5: Percentile map\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"standard-deviation-map","chapter":"4 Thematic maps in Geoda","heading":"4.5 Standard deviation map","text":"Another interesting map standard deviation map shows deviation variable area average areas. wish present deviation values cell mean, map option can utilized.\nFigure 3.6: Standard deviation map\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"unique-values-map-and-choosing-a-color","chapter":"4 Thematic maps in Geoda","heading":"4.6 Unique values map and choosing a color","text":"Sometimes ’s important create unique values map. kind map can focus color customization options detail. previous examples used gradient scale filling. ’s also necessary customize color palette optimal appearance. , right-click color icon, select “Flip Color Category” menu, choose color options.\nFigure 3.7: Unique values map choosing color\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"custom-breaks-with-category-editor","chapter":"4 Thematic maps in Geoda","heading":"4.7 Custom breaks with category editor","text":"Another helpful feature GeoDa scale division using different methods. methods natural intervals equal intervals. Also can create custom division method adjusting parameters number intervals, value, method.option useful want selectively highlight specific value groups indicate map. can assist data user establishing logical connections.\nFigure 3.8: Custom breaks category editor\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"bubble-map-cartogram","chapter":"4 Thematic maps in Geoda","heading":"4.8 Bubble map (cartogram)","text":"can create bubble map cartogram two variables. picture right can see circle size color visualize two different variables. previous maps demonstrated distribution single indicator. need showcase spatial relationship two indicators, version map used.\nFigure 3.9: Bubble map (cartogram)\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"basemap","chapter":"4 Thematic maps in Geoda","heading":"4.9 Basemap","text":"conclusion, important note big variety available basemaps software. can choose default maps satellite images also specify path map server location.\nFigure 3.10: Basemap\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"save-and-export","chapter":"4 Thematic maps in Geoda","heading":"4.10 Save and export","text":"save map, right-click empty space map window select “Save Image .” window appears, can adjust map size position legend.\nFigure 3.11: Save export\n","code":""},{"path":"thematic-maps-in-geoda.html","id":"exercise","chapter":"4 Thematic maps in Geoda","heading":"4.11 Exercise","text":"exercise, create three different maps using specified dataset. first map quantile map 6 intervals, second map percentile map third one standard deviation map. Write 5 sentences differences first two maps. Change colors select basemap standard deviation map. Save three maps .png format.","code":""},{"path":"thematic-maps-in-geoda.html","id":"cheat-sheet","chapter":"4 Thematic maps in Geoda","heading":"4.12 Cheat Sheet","text":"want reflect 1 indicator:\nUse quantile map want display\nmeasure divided equal intervals;\nUse percentile map want different\ndivision indicator;\nwish present deviation values \ncell mean, map option\ncan utilized\nwant represent deviation values ​​\nmap cell mean, use\nstandard deviation map\ncan use unique values map want \nmark areas indicator values ​​;\ncan use scale division options \nmanipulate data visualize map.\nUse quantile map want display\nmeasure divided equal intervals;Use percentile map want different\ndivision indicator;wish present deviation values \ncell mean, map option\ncan utilizedIf want represent deviation values ​​\nmap cell mean, use\nstandard deviation mapYou can use unique values map want \nmark areas indicator values ​​;can use scale division options \nmanipulate data visualize map.need demonstrate spatial relationships\ntwo indicators, cartogram used.","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"clustering-algorithms-in-real-life-problems","chapter":"5 Clustering algorithms in real life problems","heading":"5 Clustering algorithms in real life problems","text":"","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"clustering-goals","chapter":"5 Clustering algorithms in real life problems","heading":"5.1 Clustering goals:","text":"Simplifying data processingSimplifying data processingData compressionData compressionIdentification anomalies (atypical objects)Identification anomalies (atypical objects)Building hierarchy objectsBuilding hierarchy objects","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"where-was-it-used","chapter":"5 Clustering algorithms in real life problems","heading":"5.2 Where was it used?","text":"\nFigure 3.1: Pickpoints taxi\n\nFigure 3.2: Multy-scale clustering gallery\n","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"clustering-issues","chapter":"5 Clustering algorithms in real life problems","heading":"5.3 Clustering issues:","text":"Fuzzy problem statementFuzzy problem statementVariety quality criteriaVariety quality criteriaPrevalence heuristic approachesPrevalence heuristic approachesUnknown number clustersUnknown number clustersDependence result selected metricDependence result selected metric","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"most-popular-clustering-algorithms","chapter":"5 Clustering algorithms in real life problems","heading":"5.4 Most popular Clustering algorithms:","text":"Statistical clusteringK-meanISODATAFOREL (formal elements)Hierarchical/graph clusteringDensity Clustering (DBSCAN/OPTICS)","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"k-means-method","chapter":"5 Clustering algorithms in real life problems","heading":"5.5 K-means method","text":"Set number clusters KSelect randomly K points cluster centersDetermine nearest cluster center pointCalculate new cluster center based coordinates pointsRepeat steps 3-4 cluster centers stop changing location.\nFigure 3.3: Example four clusters:\n\nFigure 3.4: points resulting clusters located inside cells Voronoi diagram centers clusters:\n\nFigure 3.5: algorithm good identifying spatially separated clusters convex shape.:\n","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"isodata","chapter":"5 Clustering algorithms in real life problems","heading":"5.6 ISODATA","text":"Iterative Self-Organizing Data Analysis Technique AlgorithmThe method starts one cluster performs recursive division set along longest axis intra-cluster distances within given tolerance.\nworking algorithm presented :\nFigure 3.6: ISODATA method\nISODATA method compared K-means:necessary specify number clusters.robust method calculating resulting clusters.Also effective identifying irregularly shaped clusters.","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"hierarchical-clustering","chapter":"5 Clustering algorithms in real life problems","heading":"5.7 Hierarchical clustering","text":"recommended use Ward’s distance (red line picture)makes sense build several options choose best oneThe clustering level obtained pruning tree given distance.\nFigure 3.7: Hierarchical method\n","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"dbscan","chapter":"5 Clustering algorithms in real life problems","heading":"5.8 DBSCAN","text":"Advantages: 1.\nnumber clusters required.\n2.\nCan find clusters stable forms.\nmay even find cluster completely surrounded , connected , another cluster.\n3.\nCreates noise resistant emissions.\n4.\ntwo parameters requiredDISAdvantages: 1.\ncompletely deterministic: edge points accessible one cluster may part cluster, depending order data processed.\n2.\ngroup data sets well clusters different densities.\nFigure 3.8: DBSCAN method\n\nFigure 3.9: DBSCAN method\ndescribed clustering methods far ones, among popular.\ndescribed clustering methods far ones, among popular.\nNext, look methods implemented GEODA.","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"geoda-interface","chapter":"5 Clustering algorithms in real life problems","heading":"5.9 GEODA interface","text":"opening clustering tools GeoDA, can select clustering method, number clusters, selection distances, minimum number points class, etc.\nFigure 3.10: 1 - button clustering tools, 2 - clustering methods? 3 - window option clustering\n","code":""},{"path":"clustering-algorithms-in-real-life-problems.html","id":"what-data-should-i-use-for-clustering","chapter":"5 Clustering algorithms in real life problems","heading":"5.10 What Data should I use for clustering?","text":"Clustering can occur basis attribute data, spatial data joint significance.\ntime, can combine attributive spatial data equal importance giving greater weight one data categories.\nFigure 3.11: Variants clusters look, depending choice data clustering based.\nATTENTION! Use projected coordinates. geographic coordinates.necessary correct calculation distances. example, UTM zone 31 NWe suggest looking results different clustering methods test data.\nTest Data Attributes (France, 18th century):\n1. Used indicators example:\n2. Population per Crime persons\n3. Population per Crime property.\n4. Percent military scripts can read write.\n5. Donations poor.\n6. Population per illegitimate birth.\n7. Population per suicide.\nFigure 5.1: 1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical\nHOMETASK: Build network electric charging stations cars small townElectric charging infrastructure rapidly developing around world. Imagine small city choice single fast charger cars. cost construction high, means necessary optimally place small number fast charging stations. According plan, one charging station installed per 10,000 people city.\nExercise:\n1. Select small city (50,000 100,000 people).\n2. house, add field number apartments number residents.\n3. Get centroids residential buildings\n4. Group given set points. number clusters must correspond population selected city (1 charging station = 1 cluster = 10,000 people).\n5. Select optimal location charging stations, based fact close geometric center resulting clusters.\n6. Justify choice clustering method task based lecture materials. Draw map(s) justify optimal location charging stations, describe characteristics resulting clusters.\nSend maps justification chosen clustering method : vitaliy_mapgeo@mail.ru","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"spatial-statistics-in-geoda.-part-1","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6 Spatial statistics in GeoDa. Part 1","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"what-is-spatial-statistics","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.1 What is spatial statistics?","text":"Spatial statistics branch mathematical statistics deals numerical description variables distributed geographic space.\noften, tools spatial statistics used solve problem interpolation.\nwords, reconstruct continuous field distribution random variable limited set data observation points.\nHowever, spatial statistics scientific discipline much wider, primary task statistical description spatial distributions.","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"why-spatial-statistics-is-important","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.2 Why spatial statistics is important?","text":"Spatial statistics based widely developed mathematical apparatus, understanding basics necessary condition deliberate use geostatistical methods practice.\nworld spatial statistics based fundamental concepts random variables, random functions, random processes.\nMeasuring uncertainty critical decision making provides information possible outcomes locations, just one predicted value.\nGeoDa software wide range spatiostatistical tools, primarily focused finding spatial correlations existing data.\n, essential explore use GeoDa solve spatial tasks.\nFigure 3.1: Spatial Econometrics topic Science Direct portal\n","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"theory","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.3 Theory","text":"starting point geostatistical analysis set points \\(\\{p_1,p_2,...,p_n\\}\\) called locations, includes value \\(\\{Z(p_1),Z(p_2),...,Z(p_n)\\}\\) spatial variable.\nspatial attribute components traditionally divided two, can random.\nValues locations obtained measuring spatially distributed variable.\nmeasurement results, like data used calculations, usually characterize state environment certain moment.\nwork data, concept random variable used.\nTherefore, random variable function , result random event, takes real value, random process family random variables indexed parameter.Random variable \\(Z(w)\\) function, , result random event \\(w\\), takes real valueRandom process family random variables indexed parameter \\(t\\)","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"pre-prepared-data","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.4 Pre-prepared data","text":"Now, let’s explore existing pre-prepared data available software.\nexample, can examine Boston Housing 1970s dataset, includes housing neighborhood data city Boston based research 1970s—90s.\nFigure 3.2: Overview Boston Housing 1970s dataset\ncontains 506 observations 23 variables, point representing house sale.Let’s take two variables dataset help us solve specific problem.\nImagine working Boston housing market.\nnecessary find part city profitable sell housing large number rooms.\nnumeric vectors median values owner-occupied housing $USD (medv) average numbers rooms per dwelling (rm), can help us determine whether value variable depends surroundings points space.","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"morans-i-tests","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.5 Moran’s I tests","text":"One easiest ways study whether relationship values location neighboring locations Moran’s Index test.\nMoran’s statistic arguably commonly used indicator global spatial autocorrelation, expressed cross-product statistic variable spatial lag, variable expressed deviations mean.\nMoran’s statistic given formula:\\(= \\frac{\\sum_{} \\sum_{j} w_ij z_i \\cdot z_j/S_0}{\\sum_{}z_i^2/n}\\)\\(w\\) elements spatial weights matrix, \\(S_0\\) sum weights, n number observations.","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"weights-matrix-creation","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.6 Weights matrix creation","text":"First , need calculate spatial weights matrix.\n, click “W” icon located instrument panel.\nFigure 3.3: Weight Manager icon\npop-window, begin create matrix weights clicking “create” button.\nFigure 3.4: Weight Manager icon\nstudy spatial autocorrelation begins analysis geographic proximity.\n, analyzed unit, must determine adjacent units.\nsimple many ways define neighborhood.\nGeoDa can calculate spatial weights contiguity distance.\nContiguity-based adjacency used analyzing data associated area units, administrative division grid.\n, case, calculate distance weights.\nSelect ID variable top window, select X- Y-coordinate variables list .\nLeave rest fields default settings.\nClick “create” save spatial weight file home directory.\nFigure 3.5: Weight Manager icon\n","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"visualizing-adjacency","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.7 Visualizing adjacency","text":", “Weights Manager” pop-window, can see characteristics weights file appear.\nFigure 3.6: Spatial weights table Weights Manager\nwindow, can also explore neighbors’ histogram, connectivity map, connectivity graph.\nFigure 6.1: Connectivity map\n\nFigure 6.2: Connectivity graph\n\nFigure 6.3: Neighbours’ histogram\n’s interesting see spatial algorithm works, ’s also helpful choose correct type adjacency create appropriate spatial weights.","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"global-morans-i-test","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.8 Global Moran’s I test","text":"Now weights matrix created, use Moran’s tests estimate best district selling houses.\ntest allows us assess statistical relationship value indicator location neighboring locations.\nBased Moran’s test result, can estimate spatial regression different types forecasts.\ntwo basic types Moran’s tests.global Moran’s test evaluates presence statistical dependence entire set points, local test evaluates point separately.\nFirst , let’s calculate univariate Moran’s test.\nClick Space tab, choose Univariate Moran’s test, select “medv” variable, click OK.\nFigure 3.8: Univariate Moran’s menu\nMoran’s test scatter plot appears.\nFigure 3.9: Univariate Moran’s scatter plot\nMoran’s index ranges -1 1.\nresult 0.269, means weak statistical relationship cost housing point neighboring points.\ncan also estimate bivariate Moran’s test way.\nInstead using univariate Moran’s test, click bivariate Moran’s test select medv rm variables.\nFigure 6.4: Bivariate Moran’s menu\n\nFigure 6.5: Bivariate Moran’s scatter plot\nspatial correlation housing medium values number rooms exist.\nNow let’s explore areas Boston relationship variables greatest.","code":""},{"path":"spatial-statistics-in-geoda.-part-1.html","id":"local-morans-i-test","chapter":"6 Spatial statistics in GeoDa. Part 1","heading":"6.9 Local Moran’s I test","text":"purpose can calculate Local Moran’s test.\ntest much interesting global test can create maps.\nLet’s try calculate univariate Local Moran’s test.\nSelect medv variable click OK.\nFigure 3.11: Local Moran’s map menu\npop-window, can choose three types graphics.first two cluster significance maps illustrate spatial statistical differences.\nMark maps click OK.cluster map shows strongly cost housing neighboring locations related cost housing location, significance map shows significant statistical relationship .\nsmaller p-value, greater significance.Similarly, can perform local Moran’s test two variables.\nJust choose medv rm values pop-window, see result.\nFigure 6.6: Cluster map\n\nFigure 6.7: Significance map\ncluster map allows us understand areas city housing big number rooms can sold higher price.\nhigh-high low-low areas houses small number rooms located.\nprofitable sell housing large number rooms .Interesting explore high-low areas.\nHouses small number rooms located .\ntime, houses large number rooms around.\nIncreasing prices apartments repulsive effect.\nmeans need choose high-low areas increase housing prices realtor.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"spatial-statistics-in-geoda.-part-2","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7 Spatial statistics in GeoDa. Part 2","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"previous-lection","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.1 Previous lection","text":"previous lesson learned spatial dependence important, also learned basics including Moran’s Index.\ntwo types Moran’s statistics. First global Moran’s test. test allows us assess statistical relationship value indicator location neighboring locations.\nSecond local Moran’s test. Using method can create maps can illustrate spatial statistical differences variables.\ngeneral, Moran’s Index needed need prove importance connection two variables.\nalso lot different methods explore data.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theme-of-the-lesson","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.2 Theme of the lesson","text":"lesson study additional spatial statistics methods represented GeoDa:Joint CountLocal GearyQuantile LISASpatial CorrelogramLinear regression","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"contiguity-and-spatial-weights","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.3 Contiguity and spatial weights","text":"Contiguity spatial weights two things can use weight manager next cases.simplest form, spatial weights matrix expresses existence neighbor relation binary relationship, weights 1 0. Usually matrix sparse lot zeros .Contiguity means two spatial units share common border non-zero length. Operationally, can distinguish rook queen criterion contiguity, analogy moves allowed -named pieces chess board.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"joint-count-methods","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.4 Joint count methods","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theoretical-basis","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.4.1 Theoretical basis","text":"Joint Count method technique processing discrete variables, especially binary variables. used identify clusters binary variables means local joint count statistics. statistics consists counting joins correspond occurrences value pair neighboring locations. Mathematic representation method:\n\\[\nBB_i = x_i\\sum_{j}{w_i w_j}x_j\n\\]\nequation means Joint Count sum neighbors \\(x_i\\) value x. conclusion, can use methods determine spatial connection events distributed random way.\n### Implementation GeoDa\ncreate map using method create weight matrix first:\n1. Open Weights Manager\n2. Choose “Create”\n3. Select ID variable dataset\n4. Choose type contiguity\n5. Choose variable spatial weight\n6. Save weight data\nend see similar picture:\nFigure 3.1: Weights Manager\ncreating weight matrix can make map. available option significant map.\n1. Open Local Joint Count Space bar menu\n2. Select variable want explore\nFigure 3.2: Local Join Count Significance Map\nmap represents spatial significance negative population growth Chicago city, IL. means regions colored green strong connection location decreasing population. reason can different, reason stronngly affects .","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"local-geary","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.5 Local Geary","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theoretical-basis-1","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.5.1 Theoretical basis","text":"Local Geary method find spatial autocorrelation dissimilarity data. means small values statistics suggest positive spatial autocorrelation, whereas large values suggest negative spatial autocorrelation. can precise Local Moran test cases differences attribute similarity.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"implementation-in-geoda","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.5.2 Implementation in GeoDa","text":"First, need prepare weight matrix like previous step. Next step open “Local Geary” Space bar menu select variable.\nspite Joint Count method can choose two options maps. First cluster map representation attribute dependencies. Second variant significance map like Joint Count method.\nFigure 3.3: Local Geary Cluster Map. Tuberculosis Chicago\ncluster map great way show spatial dependencies connected attributes. Theoretically five categories.\nFirst category “Significant”. means dependency attribute spatial component. Second category “High-High”. category strong positive connection attribute location. next category “Low-Low”. category represents straight, negative connection. means surrounding area similar low values attribute like regions. fourth category represents low significant straight connection. last category negative connection region surrounding area.\nmeans practical way? Map shown top represents connection location tuberculosis spreading, let’s imagine cost flat condominium. areas “High-High” category high prices colored regions surrounding area. “Low-Low” areas cost low similar way. Despite places areas negative connection potential good deal. need estimate place lower price surrounding area . can save money.\nFigure 3.4: Local Geary Significance Map. Tuberculosis Chicago\nSignificance map represents power connection attributes spatial location like Joint Count method.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"quantile-lisa","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.6 Quantile LISA","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theoretical-basis-2","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.6.1 Theoretical basis","text":"Quantile LISA quantile local spatial autocorrelation method find spatial autocorrelation two multiple continuous variables. Linear association measured Bivariate Local Moran suffers location problem. Quantile LISA added spatial component measuring correlations. often used focus extremes distribution.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"implementation-in-geoda-1","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.6.2 Implementation in GeoDa","text":"First steps like Joint Count Local Geary methods creation spatial weights. Next need select variables quantiles analysis.\nFigure 3.5: Selecting quantiles number quantiles\nLet’s explore extreme poverty connected teen pregnancy. Select category use last quantile. case see dependency proportion people income less 50% povery minimum number teen pregnancies.\nFigure 3.6: Quantile LISA Significance Map. Connection extreme povery number teenage pregnancies\nLike previous methods can make significance map representing power spatial correlation attributes.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"spatial-correlogram","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.7 Spatial correlogram","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theoretical-basis-3","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.7.1 Theoretical basis","text":"non-parametric spatial correlogram alternative measure global spatial autocorrelation rely specification spatial weights matrix. Instead, local regression fit covariances, correlations computed pairs observations function distance . non-parametric correlogram computed means local regression pairwise correlations fall within distance bin. number bins determines distance range bin. range maximum distance divided number bins. bins chosen, fine-grained correlogram ","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"implementation-in-geoda-2","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.7.2 Implementation in GeoDa","text":"First choose Spatial correlogram space bar tools. Next choose data. see “Correlogram Parameters” menu.\nFigure 3.7: Selecting quantiles number quantiles\nchoose variable analysis number beans first. Note option spatial dependency distance regions attribute values.\nFigure 3.8: Correlogram number assaults distance\ncan see little dependency two variables. means number assaults decreases increasing distance parameter two regions. can representate fact unfortunate districts close located big distance prosperous ones.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"regression","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.8 Regression","text":"","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"theoretical-basis-4","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.8.1 Theoretical basis","text":"Regression analysis set statistical processes estimating relationship dependent variable one independent variables. standard regression parameters model constant. means difference spatial dependence variables. solve problem, can use geographically weighted regression. method weights defined every location individually. mathematical point view weight coefficient matrix used close points higher influence rate far ones.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"implementation-in-geoda-3","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.8.2 Implementation in GeoDa","text":"Note regression different menu spatial statistics toolsYou need select dependent independent variablesYou may add additional weights file\nFigure 3.9: Settings regression\nprocessing see Regression Report.\nFigure 3.10: Regression Report\ntwo key points . First: R-squared – statistical measure determines proportion variance dependent variable can explained independent variable. Second: F-value – statistical measure null hypothesis regression coefficients equal zero. case regression can’t predict model connection data.","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"conclusion","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.9 Conclusion","text":"Use Joint Count methods need process binary dataUse Local Geary methods need describe contiguous data find similarity dissimilarity areasUse Quantile LISA need process contiguous data multiple variable find autocorrelationUse spatial correlogram need find correlation differences variable different distancesUse regression prove concept","code":""},{"path":"spatial-statistics-in-geoda.-part-2.html","id":"task","chapter":"7 Spatial statistics in GeoDa. Part 2","heading":"7.10 Task","text":"Explore spatial correlation poverty cancer deaths per 100 000 people Chicago region.Use dataset: https://geodacenter.github.io/data--lab/comarea_vars/Use Pov200P independent variable CancerAll dependent variableTry Local Geary Quantile LISA find autocorrelation make map. end use regression tool make conclusion dependencyDescribe result get significance maps regression report","code":""}] diff --git a/docs/search_index.json b/docs/search_index.json new file mode 100644 index 0000000..25d05d4 --- /dev/null +++ b/docs/search_index.json @@ -0,0 +1 @@ +[["index.html", "GeoDa book Chapter 1 About", " GeoDa book Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V. 2023-12-22 Chapter 1 About "],["the-inroduction.html", "Chapter 2 The Inroduction 2.1 The essence of maps", " Chapter 2 The Inroduction 2.1 The essence of maps Creating map is a useful way to take space into account in your research. The common ways to explain why to do so are Tobler’s laws of geography: Everything is related to everything else, but near things are more related than distant things The phenomenon external to an area of interest affects what goes on inside — Waldo Tobler In fact, you shall not interpret these as strict laws of any kind. However it is very useful to treat these statements as initial hypotheses for spatial data analysis. In order to check whether any spatial pattern is or is not presented in a phenomenon, you can apply different techniques. Exploratory data analysis can be performed with spatial data, displaying a map is a way to visually evaluate quantitative features of spatial distribution, spatial statistics is a set of techniques to estimate qualitative features of spatial distribution. And our course follows this order to undercover you exciting world of spatial data analysis. First lesson is a brief introduction to a domain In the second lesson we will talk about creating plots with spatial data and GeoDa The third is about creation of simple thematic maps with GeoDa The last three lessons are about spatial statistics applications "],["working-with-graphics-in-geoda.html", "Chapter 3 Working with graphics in GeoDa 3.1 Introduction 3.2 Specific od data storage in GIS 3.3 Graphic types in GeoDa 3.4 Practical exercise", " Chapter 3 Working with graphics in GeoDa 3.1 Introduction Today we are going to get acquaintanced with creating graphics for various statistic datasets in GeoDa. This GIS has prepared datasets and today we’ll use one of them. We’re going to work with Boston Housing 1970s, which contains housing and neighborhood data for the city of Boston based on research from the 1970s-90s. This dataset is a point shapefile with 506 observations and 23 variables. To open this data you have to choose File>New and to choose Boston Home Sales from Sample Data. After that you’ll be able to see the spatial distribution of the parameter. In the bottom left you’ll see the information about the number of observations. Figure 3.1: Opening the dataset Figure 3.2: Boston Housing 1970s 3.2 Specific od data storage in GIS To understand what observations and variables stand for we have to find out some facts about the ways of storing data in GIS. In GIS each object in a dataset consists of 2 parts: geometric (you see it) and semantic (responsible for the property of the object and represented as a row in a table). So, the semantic part is a table, where each line is an object of a dataset and each column contains the characteristic of the object. It means that the number of observations is a number of objects (rows) and the number of variables stands for the number of object characteristics (columns). Figure 3.3: Storing data in GIS 3.3 Graphic types in GeoDa There’re 8 types of graphics in GeoDA: Histogram, Box Plot, Scatter Plot, Scatter Plot, Matrix, Bubble Chart, 3D Scatter Plot, Conditional Plot Figure 3.4: Types of graphics in GeoDa 3.3.1 Histogram Histogram shows the meanings of one variable for each chosen object. You have to push the histogram button on the control panel and to choose the variable you need. If you want to create histogram not for all objects, but for concrete ones, you have to choose them either from the table or from the map. In that case the histogram will show the meanings of the variable for all objects and for chosen ones. To open the table, you have to push the button on the control panel. To chose other colors for the histogram or to export it as an image, you have to click it with the right button and to choose the option you need. This works for all types of graphics in GeoDa. Figure 3.5: Creating Histogram in GeoDa 3.3.2 Box plot Boxplots are created to represent the distribution of a numeric variable. The graphic reflects maximum and minimum values, median, first and last quantiles and p-values at the same time. To create boxplot, you also just have to push the button on the control panel and to choose the variable you need. Boxplot also has some numeric characteristics for easier interpretation. Figure 3.6: Creating Box plot in GeoDa 3.3.3 Scatter plot Scatter plot is based on using Cartesian coordinates to display values for typically 2 variables for a dataset. There’re 3 types of Scatter plots in GeoDa. To create each of them, you still have to push a specified button on a control panel and create the variables. For classical scatter plot you’ll have to choose 2 of them. The 3D Scatter plot uses the 3-dimensial representation for 3 variables. Finally, the Scatter plot Matrix is a grid of scatter plots used to visualize bivariate relationships between combinations of variables. Here you can choose more than 2 or 3 variables for comparison, if you need. To create scatter plots, you also just have to push the button on the control panel and to choose the variable you need. Figure 3.7: Creating Scatterplot and Scatterplot Matrix in GeoDa Figure 3.8: Creating 3D Scatterplot in GeoDa 3.3.4 Bubble Chart A bubble chart is a type of data visualization that uses circles (bubbles) to represent data points in a two-dimensional plot. It is similar to a scatter plot, but uses bubbles instead of dots. Typically, a bubble chart shows the values of three numeric variables, with each circle representing an observation and its position on the plot indicating the values of two other variables. To create bubble chart, you also have to push the button on the control panel and to choose the variable you need. Figure 3.9: Creating Bubble Chart in GeoDa 3.3.5 Parallel coordinates plot Parallel coordinates plot is a common way of visualizing and analyzing high-dimensional datasets. A point in n-dimensional space is represented as a polyline with vertices on the parallel axes and the position of the vertex corresponds to the coordinate of the point. To create it, you have to push the button on the control panel and to choose the variable you need. Figure 3.10: Creating Parallel coordinates plot in GeoDa 3.3.6 Conditional plot Conditional plot consists of two variables conditional on the value of a third variable. You can create a map, a histogram, a scatter plot or a boxplot, using the button on a control panel. You’ll have to choose 3 variables and get 9 graphics, showing their dependencies. Figure 3.11: Creating a Conditional plot in GeoDa 3.4 Practical exercise To check yourself after this lesson you have to built 3 Graphics for the observations with the towno=27. 1. You have to create a histogram to analyze distances to Boston employment centers (dis); 2. You have to create a histogram to analyze per capita crime (crim) and fix in *.txt file the minimum, maximum, mean and median values of the variable; 3. You have to create a bubble chart to analyze the dependencies between such variables as age (x-axes), dis (y-axes), crim (bubble-size) and indus (bubble-color). The result of your task must be represented by a txt-file with statistical parameters and 3 png-files with graphics. "],["thematic-maps-in-geoda.html", "Chapter 4 Thematic maps in Geoda 4.1 What is a thematic map? 4.2 Control panel 4.3 Quantile map 4.4 Percentile map 4.5 Standard deviation map 4.6 Unique values map and choosing a color 4.7 Custom breaks with category editor 4.8 Bubble map (cartogram) 4.9 Basemap 4.10 Save and export 4.11 Exercise 4.12 Cheat Sheet", " Chapter 4 Thematic maps in Geoda Our today’s lesson is about how to make simple thematic maps using GeoDa software. We will explore thematic mapping toolkit using Chicago Community Area dataset which has a large attribute table. It allows us to create a huge variety of thematic maps. Figure 3.1: Chicago Community Area dataset 4.1 What is a thematic map? But first, what is a thematic map? Roughly speaking, a thematic map is a map about certain theme. It’s interesting to see some kind of geographical pattern of a particular subject matter that’s why we use such maps. The GeoDa allows us to create different kinds of a thematic maps. So, let’s focus on some of them. During the lesson, we will use the interface which is shown on the left part of the slide. Figure 3.2: Thematic maooing toolkit 4.2 Control panel When the window opens, you will notice several icons at the top. That tools are used to select elements on the map, invert the selection, zoom in and zoom out. Also you can add the basemap. The tools details we will describe later. Figure 3.3: Control panel 4.3 Quantile map Now, let’s explore some mapping options. You can create a map using quantiles, dividing the entire data array into equal parts. You have the opportunity to choose the number of parts, ranging from two to ten.This kind of map is effective in accurately depicting the distribution of the indicator. By dividing it into equal intervals, we can easily identify the geographical patterns of the phenomenon’s distribution throughout the territory. Figure 3.4: Quantile map 4.4 Percentile map Another possible choropleth is a percentile map, which enables the visualization of the percentage distribution of the variable by region.This map is suitable for displaying a non-uniform distribution. Figure 3.5: Percentile map 4.5 Standard deviation map Another interesting map is the standard deviation map which shows the deviation of the variable in each area from the average for all areas. If you wish to present the deviation of values in each cell from the mean, then this map option can be utilized. Figure 3.6: Standard deviation map 4.6 Unique values map and choosing a color Sometimes it’s important to create the unique values map. With this kind of map you can focus on the color customization options in detail. In previous examples we used a gradient scale filling. But it’s also necessary to customize color palette for optimal appearance. To do so, right-click on the color icon, select “Flip Color for Category” from the menu, and choose the color from the options. Figure 3.7: Unique values map and choosing a color 4.7 Custom breaks with category editor Another helpful feature in GeoDa is a scale division using different methods. The methods are natural intervals and equal intervals. Also you can create your own custom division method adjusting such parameters as the number of intervals, a value, and a method.This option is useful if you want to selectively highlight specific value groups and indicate them on the map. This can assist the data user in establishing logical connections. Figure 3.8: Custom breaks with category editor 4.8 Bubble map (cartogram) You can create bubble map or cartogram with two variables. On picture on the right you can see that a circle size and a color visualize two different variables. All the previous maps have demonstrated the distribution of a single indicator. If you need to showcase the spatial relationship between two indicators, then this version of the map should be used. Figure 3.9: Bubble map (cartogram) 4.9 Basemap In conclusion, it is important to note a big variety of available basemaps in the software. You can choose not only default maps and satellite images but also specify a path to other map server location. Figure 3.10: Basemap 4.10 Save and export To save your map, right-click on an empty space in the map window and select “Save Image As.” In the window that appears, you can adjust the map size and position of the legend. Figure 3.11: Save and export 4.11 Exercise As an exercise, you should create three different maps using the specified dataset. The first map is a quantile map with 6 intervals, the second map is a percentile map and the third one is a standard deviation map. Write 5 sentences about differences between the first two maps. Change the colors and select a basemap for the standard deviation map. Save all three maps in .png format. 4.12 Cheat Sheet If you want to reflect 1 indicator: Use a quantile map if you want to display a measure divided into equal intervals; Use a percentile map if you want a different division of the indicator; If you wish to present the deviation of values in each cell from the mean, then this map option can be utilized If you want to represent the deviation of values ​​ in each map cell from the mean, use a standard deviation map You can use a unique values map if you want to mark areas where the indicator values ​​are the same; You can use other scale division options to manipulate data and visualize it on a map. If you need to demonstrate spatial relationships between two indicators, then a cartogram should be used. "],["clustering-algorithms-in-real-life-problems.html", "Chapter 5 Clustering algorithms in real life problems 5.1 Clustering goals: 5.2 Where was it used? 5.3 Clustering issues: 5.4 Most popular Clustering algorithms: 5.5 K-means method 5.6 ISODATA 5.7 Hierarchical clustering 5.8 DBSCAN 5.9 GEODA interface 5.10 What Data should I use for clustering?", " Chapter 5 Clustering algorithms in real life problems 5.1 Clustering goals: Simplifying data processing Data compression Identification of anomalies (atypical objects) Building a hierarchy of objects 5.2 Where was it used? Figure 3.1: Pickpoints in taxi Figure 3.2: Multy-scale clustering in gallery 5.3 Clustering issues: Fuzzy problem statement Variety of quality criteria Prevalence of heuristic approaches Unknown number of clusters Dependence of the result on the selected metric 5.4 Most popular Clustering algorithms: Statistical clustering K-mean ISODATA FOREL (formal elements) Hierarchical/graph clustering Density Clustering (DBSCAN/OPTICS) 5.5 K-means method Set the number of clusters K Select randomly K points as cluster centers Determine the nearest cluster center for each point Calculate a new cluster center based on the coordinates of its points Repeat steps 3-4 until the cluster centers stop changing their location. Figure 3.3: Example with four clusters: Figure 3.4: All points of the resulting clusters are located inside the cells of the Voronoi diagram for the centers of these clusters: Figure 3.5: The algorithm is good at identifying only spatially separated clusters of convex shape.: 5.6 ISODATA Iterative Self-Organizing Data Analysis Technique Algorithm The method starts with one cluster and performs a recursive division of the set along its longest axis until all intra-cluster distances are within a given tolerance. The working algorithm is presented below: Figure 3.6: ISODATA method ISODATA method compared to K-means: It is not necessary to specify the number of clusters. A more robust method for calculating the resulting clusters. Also not effective in identifying irregularly shaped clusters. 5.7 Hierarchical clustering It is recommended to use Ward’s distance (red line at the picture) It makes sense to build several options and choose the best one The clustering level is obtained by pruning the tree at a given distance. Figure 3.7: Hierarchical method 5.8 DBSCAN Advantages: 1. The number of clusters is not required. 2. Can find clusters of stable forms. It may even find a cluster that is completely surrounded by, but not connected to, another cluster. 3. Creates noise and is resistant to emissions. 4. Only two parameters required DISAdvantages: 1. Not completely deterministic: edge points accessible from more than one cluster may be part of any cluster, depending on the order in which the data is processed. 2. Cannot group data sets well where the clusters have different densities. Figure 3.8: DBSCAN method Figure 3.9: DBSCAN method The described clustering methods are far from the only ones, but they are among the most popular. The described clustering methods are far from the only ones, but they are among the most popular. Next, we will look at how these methods are implemented in GEODA. 5.9 GEODA interface When opening the clustering tools in GeoDA, you can select the clustering method, and then the number of clusters, selection distances, the minimum number of points in the class, etc. Figure 3.10: 1 - button with clustering tools, 2 - clustering methods? 3 - window with option of clustering 5.10 What Data should I use for clustering? Clustering can occur on the basis of attribute data, spatial data and their joint significance. At the same time, we can combine attributive and spatial data both in equal importance and giving greater weight to one of the data categories. Figure 3.11: Variants of how clusters look, depending on the choice of data on which clustering is based. ATTENTION! Use projected coordinates. NOT geographic coordinates.This is necessary for correct calculation of distances. For example, UTM zone 31 N We suggest looking at the results of different clustering methods on test data. Test Data Attributes (France, 18th century): 1. Used indicators for example: 2. Population per Crime against persons 3. Population per Crime against property. 4. Percent of military scripts who can read and write. 5. Donations to the poor. 6. Population per illegitimate birth. 7. Population per suicide. Figure 5.1: 1. K-Means, 2. K-Medoids, 3. Spectral, 4. Hierarchical HOMETASK: Build a network of electric charging stations for cars in a small town Electric charging infrastructure is rapidly developing around the world. Imagine that in the small city of your choice there is not a single fast charger for cars. The cost of their construction is high, which means it is necessary to optimally place a small number of fast charging stations. According to the plan, one charging station will be installed per 10,000 people in the city. Exercise: 1. Select a small city (50,000 to 100,000 people). 2. For each house, add a field with the number of apartments or number of residents. 3. Get centroids of residential buildings 4. Group a given set of points. The number of clusters must correspond to the population of the selected city (1 charging station = 1 cluster = 10,000 people). 5. Select the optimal location of charging stations, based on the fact that they should be close to the geometric center of the resulting clusters. 6. Justify the choice of clustering method for this task based on the lecture materials. Draw up a map(s) to justify the optimal location of charging stations, describe the characteristics of the resulting clusters. Send maps and justification for the chosen clustering method to: vitaliy_mapgeo@mail.ru "],["spatial-statistics-in-geoda.-part-1.html", "Chapter 6 Spatial statistics in GeoDa. Part 1 6.1 What is spatial statistics? 6.2 Why spatial statistics is important? 6.3 Theory 6.4 Pre-prepared data 6.5 Moran’s I tests 6.6 Weights matrix creation 6.7 Visualizing adjacency 6.8 Global Moran’s I test 6.9 Local Moran’s I test", " Chapter 6 Spatial statistics in GeoDa. Part 1 6.1 What is spatial statistics? Spatial statistics is a branch of mathematical statistics that deals with the numerical description of variables distributed in geographic space. Most often, tools of spatial statistics are used to solve the problem of interpolation. In other words, we reconstruct a continuous field of distribution of a random variable from a limited set of data at observation points. However, spatial statistics as a scientific discipline is much wider, with its primary task being the statistical description of spatial distributions. 6.2 Why spatial statistics is important? Spatial statistics is based on a widely developed mathematical apparatus, and understanding the basics of it is a necessary condition for the deliberate use of geostatistical methods in practice. The world of spatial statistics is based on the fundamental concepts of random variables, random functions, and random processes. Measuring uncertainty is critical to decision making because it provides information about possible outcomes for all locations, not just one predicted value. The GeoDa software has a wide range of spatiostatistical tools, primarily focused on finding spatial correlations in existing data. So, it is essential to explore how to use GeoDa to solve spatial tasks. Figure 3.1: Spatial Econometrics topic in Science Direct portal 6.3 Theory The starting point of geostatistical analysis is a set of points \\(\\{p_1,p_2,...,p_n\\}\\) called locations, each of which includes the value \\(\\{Z(p_1),Z(p_2),...,Z(p_n)\\}\\) of some spatial variable. The spatial and attribute components are traditionally divided into two, and both can be random. Values in locations are obtained by measuring a spatially distributed variable. The measurement results, like the data used for calculations, usually characterize the state of the environment at a certain moment. To work with such data, the concept of a random variable is used. Therefore, a random variable is a function that, as a result of a random event, takes on a real value, and a random process is a family of random variables indexed by some parameter. Random variable \\(Z(w)\\) is a function, that, as a result of a random event \\(w\\), takes on a real value Random process is a family of random variables indexed by some parameter \\(t\\) 6.4 Pre-prepared data Now, let’s explore the existing pre-prepared data available in the software. For example, we can examine the Boston Housing 1970s dataset, which includes housing and neighborhood data for the city of Boston based on research from the 1970s—90s. Figure 3.2: Overview of Boston Housing 1970s dataset It contains 506 observations with 23 variables, each point representing a house for sale. Let’s take two variables from the dataset that will help us solve a specific problem. Imagine you are working in the Boston housing market. It is necessary to find out in which part of the city it is profitable to sell housing with a large number of rooms. So the numeric vectors of median values of owner-occupied housing in $USD (medv) and the average numbers of rooms per dwelling (rm), can help us determine whether the value of a variable depends on the surroundings of points in space. 6.5 Moran’s I tests One of the easiest ways to study whether there is a relationship between values in each location and in neighboring locations is the Moran’s Index test. Moran’s I statistic is arguably the most commonly used indicator of global spatial autocorrelation, expressed as a cross-product statistic between a variable and its spatial lag, with the variable expressed in deviations from its mean. Moran’s I statistic is then given by the formula: \\(I = \\frac{\\sum_{i} \\sum_{j} w_ij z_i \\cdot z_j/S_0}{\\sum_{i}z_i^2/n}\\) with \\(w\\) as the elements of the spatial weights matrix, \\(S_0\\) as the sum of all the weights, and n as the number of observations. 6.6 Weights matrix creation First of all, we need to calculate the spatial weights matrix. To do this, click on the “W” icon located on the instrument panel. Figure 3.3: Weight Manager icon In the pop-up window, we begin to create a matrix of weights by clicking the “create” button. Figure 3.4: Weight Manager icon The study of spatial autocorrelation begins with an analysis of geographic proximity. That is, for each analyzed unit, we must determine the adjacent units. This is not so simple because there are many ways to define a neighborhood. GeoDa can calculate spatial weights by contiguity and by distance. Contiguity-based adjacency is used when analyzing data associated with area units, such as an administrative division grid. So, this is not our case, and we will calculate distance weights. Select the ID variable at the top of the window, then select the X- and Y-coordinate variables from the list below. Leave the rest of the fields with default settings. Click “create” and save the spatial weight file in your home directory. Figure 3.5: Weight Manager icon 6.7 Visualizing adjacency After that, in the “Weights Manager” pop-up window, you can see that the characteristics of the weights file appear. Figure 3.6: Spatial weights table in Weights Manager In that window, you can also explore a neighbors’ histogram, connectivity map, and connectivity graph. Figure 6.1: Connectivity map Figure 6.2: Connectivity graph Figure 6.3: Neighbours’ histogram It’s interesting to see how the spatial algorithm works, and it’s also helpful to choose the correct type of adjacency to create appropriate spatial weights. 6.8 Global Moran’s I test Now that a weights matrix has been created, we will use the Moran’s I tests to estimate the best district for selling houses. This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. Based on Moran’s test result, we can estimate spatial regression for different types of forecasts. There are two basic types of Moran’s tests. The global Moran’s test evaluates the presence of statistical dependence for the entire set of points, while the local test evaluates each point separately. First of all, let’s calculate the univariate Moran’s test. Click on the Space tab, choose the Univariate Moran’s I test, select the “medv” variable, and click OK. Figure 3.8: Univariate Moran’s I menu The Moran’s test scatter plot appears. Figure 3.9: Univariate Moran’s I scatter plot Moran’s index ranges from -1 to 1. Our result is 0.269, which means that there is a weak statistical relationship between the cost of housing at each point and the neighboring points. We can also estimate a bivariate Moran’s test in same way. Instead of using the univariate Moran’s test, click on the bivariate Moran’s test and select the medv and rm variables. Figure 6.4: Bivariate Moran’s menu Figure 6.5: Bivariate Moran’s I scatter plot The spatial correlation between housing medium values and number of rooms is exist. Now let’s explore in which areas of Boston will the relationship between variables be the greatest. 6.9 Local Moran’s I test For that purpose we can calculate the Local Moran’s I test. This test is much more interesting than the global test because we can create maps. Let’s try to calculate the univariate Local Moran’s test. Select the medv variable once again and click OK. Figure 3.11: Local Moran’s I map menu In the pop-up window, you can choose three types of graphics. The first two are the cluster and significance maps that illustrate the spatial statistical differences. Mark both maps and click OK. The cluster map shows how strongly the cost of housing in neighboring locations is related to the cost of housing in each location, and the significance map shows how significant a statistical relationship is. The smaller the p-value, the greater the significance. Similarly, you can perform a local Moran’s test for two variables. Just choose the medv and rm values in the pop-up window, and you will see a result. Figure 6.6: Cluster map Figure 6.7: Significance map The cluster map allows us to understand in which areas of the city housing with a big number of rooms can be sold at a higher price. In the high-high and low-low areas houses with a small number of rooms are located. It is not profitable to sell housing with a large number of rooms there. Interesting to explore the high-low areas. Houses with a small number of rooms are located there. At the same time, there are houses with a large number of rooms around. Increasing prices for such apartments will not have a repulsive effect. It means that we need to choose a high-low areas to increase housing prices as a realtor. "],["spatial-statistics-in-geoda.-part-2.html", "Chapter 7 Spatial statistics in GeoDa. Part 2 7.1 Previous lection 7.2 Theme of the lesson 7.3 Contiguity and spatial weights 7.4 Joint count methods 7.5 Local Geary 7.6 Quantile LISA 7.7 Spatial correlogram 7.8 Regression 7.9 Conclusion 7.10 Task", " Chapter 7 Spatial statistics in GeoDa. Part 2 7.1 Previous lection In the previous lesson you have learned why spatial dependence is important, also you have learned some basics including Moran’s Index. There are two types of Moran’s statistics. First is global Moran’s test. This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. Second is local Moran’s test. Using this method you can create maps which can illustrate the spatial statistical differences between variables. In general, Moran’s Index is needed when you need to prove the importance of connection between two variables. But also there are a lot of different methods to explore the data. 7.2 Theme of the lesson In this lesson you will study the additional spatial statistics methods represented in GeoDa: Joint Count Local Geary Quantile LISA Spatial Correlogram Linear regression 7.3 Contiguity and spatial weights Contiguity and spatial weights are the two things which you can use in the weight manager in the next cases. In its simplest form, the spatial weights matrix expresses the existence of a neighbor relation as a binary relationship, with weights 1 and 0. Usually this matrix is very sparse with a lot of zeros in it. Contiguity means that two spatial units share a common border of non-zero length. Operationally, we can further distinguish between a rook and a queen criterion of contiguity, in analogy to the moves allowed for the such-named pieces on a chess board. 7.4 Joint count methods 7.4.1 Theoretical basis Joint Count method is a technique for processing discrete variables, especially for binary variables. It is used to identify clusters in binary variables by means of the local joint count statistics. The statistics consists of counting the joins that correspond to occurrences of value pair at neighboring locations. Mathematic representation of this method: \\[ BB_i = x_i\\sum_{j}{w_i w_j}x_j \\] This equation means that Joint Count is a sum of neighbors of \\(x_i\\) which are have the same value that x. In conclusion, you can use these methods to determine if there is a spatial connection between events or they are distributed in the random way. ### Implementation in GeoDa To create map using this method you have to create a weight matrix first: 1. Open the Weights Manager 2. Choose “Create” 3. Select an ID variable in your dataset 4. Choose type of contiguity 5. Choose variable as spatial weight 6. Save the weight data In the end you will see similar picture: Figure 3.1: Weights Manager After creating the weight matrix you can make the map. The only available option is a significant map. 1. Open Local Joint Count in Space bar menu 2. Select the variable you want to explore Figure 3.2: Local Join Count Significance Map This map represents a spatial significance of negative population growth in Chicago city, IL. It means that the regions colored in green have strong connection between their location and decreasing its population. The reason can be different, but this reason stronngly affects to them. 7.5 Local Geary 7.5.1 Theoretical basis Local Geary is a method to find the spatial autocorrelation through dissimilarity of data. It means that small values of the statistics suggest positive spatial autocorrelation, whereas large values suggest negative spatial autocorrelation. It can be more precise that Local Moran test in some cases because of differences in attribute similarity. 7.5.2 Implementation in GeoDa First, you need to prepare the weight matrix like in the previous step. Next step is to open “Local Geary” in Space bar menu and select the variable. In spite of Joint Count method you can choose two options for the maps. First is a cluster map which is a representation of attribute dependencies. Second variant is a significance map like in the Joint Count method. Figure 3.3: Local Geary Cluster Map. Tuberculosis in Chicago The cluster map is a great way to show spatial dependencies connected with attributes. Theoretically there are five categories. First category is a “Not Significant”. It means that there is no dependency between attribute and spatial component. Second category is a “High-High”. It this category there is a strong positive connection between attribute and location. The next category is a “Low-Low”. This category represents straight, but negative connection. It means that surrounding area has the similar low values of the attribute like this regions. The fourth category represents low significant straight connection. The last category is about negative connection between this region and surrounding area. But what it means in the practical way? Map shown in the top represents the connection between location and tuberculosis spreading, but let’s imagine that it is a cost of the flat in condominium. In the areas with “High-High” category there are high prices both in the colored regions and surrounding area. In the “Low-Low” areas cost is low in the similar way. Despite of this places the areas with negative connection have a potential for a good deal. You need to estimate is this place has a lower price that in surrounding area or not. If it is you can save your money. Figure 3.4: Local Geary Significance Map. Tuberculosis in Chicago The Significance map represents power of the connection between attributes and spatial location like in the Joint Count method. 7.6 Quantile LISA 7.6.1 Theoretical basis Quantile LISA or quantile local spatial autocorrelation is a method to find spatial autocorrelation between two or multiple continuous variables. Linear association measured by Bivariate Local Moran suffers from the location problem. Quantile LISA added a spatial component for measuring correlations. More often it is used when the focus is on extremes of the distribution. 7.6.2 Implementation in GeoDa First do the steps like in Joint Count and Local Geary methods with creation of spatial weights. Next you need to select the variables and quantiles for analysis. Figure 3.5: Selecting quantiles and number of quantiles Let’s explore how extreme poverty is connected with teen pregnancy. Select the category and use the last quantile. In this case we will see the dependency between proportion of people with income less than 50% of povery minimum and number of teen pregnancies. Figure 3.6: Quantile LISA Significance Map. Connection between extreme povery and number of teenage pregnancies Like in the previous methods we can make a significance map representing power of spatial correlation between attributes. 7.7 Spatial correlogram 7.7.1 Theoretical basis A non-parametric spatial correlogram is an alternative measure of global spatial autocorrelation that does not rely on the specification of a spatial weights matrix. Instead, a local regression is fit to the covariances, or correlations computed for all pairs of observations as a function of the distance between them. The non-parametric correlogram is computed by means of a local regression on the pairwise correlations that fall within each distance bin. The number of bins determines the distance range of each bin. This range is the maximum distance divided by the number of bins. The more bins are chosen, the more fine-grained the correlogram will be 7.7.2 Implementation in GeoDa First choose Spatial correlogram in space bar tools. Next choose the data. You will see the “Correlogram Parameters” menu. Figure 3.7: Selecting quantiles and number of quantiles You should choose variable for analysis and number of beans first. Note that there is an option that it will be no spatial dependency between distance of the regions and attribute values. Figure 3.8: Correlogram between number of assaults and distance As you can see there is a little dependency between this two variables. It means that number of assaults decreases with increasing distance parameter between two regions. It can representate the fact that unfortunate districts are close to each other and they are located in the big distance from prosperous ones. 7.8 Regression 7.8.1 Theoretical basis Regression analysis is a set of statistical processes for estimating the relationship between a dependent variable and one or more independent variables. In the standard regression parameters of the model are constant. It means that there is no difference in spatial dependence between variables. To solve this problem, you can use geographically weighted regression. In this method weights are defined for every location individually. In the mathematical point of view weight coefficient matrix is used where close points have higher influence rate than far ones. 7.8.2 Implementation in GeoDa Note that regression is in different menu than other spatial statistics tools You need to select dependent and independent variables You may add additional weights file Figure 3.9: Settings of the regression After processing you will see the Regression Report. Figure 3.10: Regression Report There are two key points in it. First: R-squared – statistical measure that determines the proportion of variance in the dependent variable that can be explained by the independent variable. Second: F-value – statistical measure where the null hypothesis is that all the regression coefficients are equal to zero. In this case regression can’t predict the model of connection between data. 7.9 Conclusion Use Joint Count methods if you need to process with binary data Use Local Geary methods if you need to describe the contiguous data and find similarity and dissimilarity areas Use Quantile LISA if you need to process contiguous data with multiple variable and find an autocorrelation Use spatial correlogram if you need to find correlation between differences of variable and different distances Use a regression to prove your concept 7.10 Task Explore the spatial correlation between poverty with cancer deaths per 100 000 people in Chicago region. Use this dataset: https://geodacenter.github.io/data-and-lab/comarea_vars/ Use Pov200P as an independent variable and CancerAll as dependent variable Try Local Geary and Quantile LISA to find autocorrelation and make map. In the end use regression tool to make a conclusion between their dependency Describe the result which you get with significance maps and regression report "],["404.html", "Page not found", " Page not found The page you requested cannot be found (perhaps it was moved or renamed). You may want to try searching to find the page's new location, or use the table of contents to find the page you are looking for. "]] diff --git a/docs/spatial-statistics-in-geoda.-part-1.html b/docs/spatial-statistics-in-geoda.-part-1.html new file mode 100644 index 0000000..c4173dd --- /dev/null +++ b/docs/spatial-statistics-in-geoda.-part-1.html @@ -0,0 +1,356 @@ + + + + + + +Chapter 6 Spatial statistics in GeoDa. Part 1 | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+6 Spatial statistics in GeoDa. Part 1 +

+
+

+6.1 What is spatial statistics? +

+

Spatial statistics is a branch of mathematical statistics that deals with the numerical description of variables distributed in geographic space. +Most often, tools of spatial statistics are used to solve the problem of interpolation. +In other words, we reconstruct a continuous field of distribution of a random variable from a limited set of data at observation points. +However, spatial statistics as a scientific discipline is much wider, with its primary task being the statistical description of spatial distributions.

+
+
+

+6.2 Why spatial statistics is important? +

+

Spatial statistics is based on a widely developed mathematical apparatus, and understanding the basics of it is a necessary condition for the deliberate use of geostatistical methods in practice. +The world of spatial statistics is based on the fundamental concepts of random variables, random functions, and random processes. +Measuring uncertainty is critical to decision making because it provides information about possible outcomes for all locations, not just one predicted value. +The GeoDa software has a wide range of spatiostatistical tools, primarily focused on finding spatial correlations in existing data. +So, it is essential to explore how to use GeoDa to solve spatial tasks.

+
+ +Spatial Econometrics topic in [Science Direct portal](https://www.sciencedirect.com/topics/social-sciences/spatial-econometrics)

+Figure 3.1: Spatial Econometrics topic in Science Direct portal +

+
+
+
+

+6.3 Theory +

+

The starting point of geostatistical analysis is a set of points \(\{p_1,p_2,...,p_n\}\) called locations, each of which includes the value \(\{Z(p_1),Z(p_2),...,Z(p_n)\}\) of some spatial variable. +The spatial and attribute components are traditionally divided into two, and both can be random. +Values in locations are obtained by measuring a spatially distributed variable. +The measurement results, like the data used for calculations, usually characterize the state of the environment at a certain moment. +To work with such data, the concept of a random variable is used. +Therefore, a random variable is a function that, as a result of a random event, takes on a real value, and a random process is a family of random variables indexed by some parameter.

+
+

Random variable \(Z(w)\) is a function, that, as a result of a random event \(w\), takes on a real value

+

Random process is a family of random variables indexed by some parameter \(t\)

+
+
+
+

+6.4 Pre-prepared data +

+

Now, let’s explore the existing pre-prepared data available in the software. +For example, we can examine the Boston Housing 1970s dataset, which includes housing and neighborhood data for the city of Boston based on research from the 1970s—90s.

+
+ +Overview of Boston Housing 1970s dataset

+Figure 3.2: Overview of Boston Housing 1970s dataset +

+
+

It contains 506 observations with 23 variables, each point representing a house for sale.

+

Let’s take two variables from the dataset that will help us solve a specific problem. +Imagine you are working in the Boston housing market. +It is necessary to find out in which part of the city it is profitable to sell housing with a large number of rooms. +So the numeric vectors of median values of owner-occupied housing in $USD (medv) and the average numbers of rooms per dwelling (rm), can help us determine whether the value of a variable depends on the surroundings of points in space.

+
+
+

+6.5 Moran’s I tests +

+

One of the easiest ways to study whether there is a relationship between values in each location and in neighboring locations is the Moran’s Index test. +Moran’s I statistic is arguably the most commonly used indicator of global spatial autocorrelation, expressed as a cross-product statistic between a variable and its spatial lag, with the variable expressed in deviations from its mean. +Moran’s I statistic is then given by the formula:

+

\(I = \frac{\sum_{i} \sum_{j} w_ij z_i \cdot z_j/S_0}{\sum_{i}z_i^2/n}\)

+

with \(w\) as the elements of the spatial weights matrix, \(S_0\) as the sum of all the weights, and n as the number of observations.

+
+
+

+6.6 Weights matrix creation +

+

First of all, we need to calculate the spatial weights matrix. +To do this, click on the “W” icon located on the instrument panel.

+
+ +Weight Manager icon

+Figure 3.3: Weight Manager icon +

+
+

In the pop-up window, we begin to create a matrix of weights by clicking the “create” button.

+
+ +Weight Manager icon

+Figure 3.4: Weight Manager icon +

+
+

The study of spatial autocorrelation begins with an analysis of geographic proximity. +That is, for each analyzed unit, we must determine the adjacent units. +This is not so simple because there are many ways to define a neighborhood. +GeoDa can calculate spatial weights by contiguity and by distance. +Contiguity-based adjacency is used when analyzing data associated with area units, such as an administrative division grid. +So, this is not our case, and we will calculate distance weights. +Select the ID variable at the top of the window, then select the X- and Y-coordinate variables from the list below. +Leave the rest of the fields with default settings. +Click “create” and save the spatial weight file in your home directory.

+
+ +Weight Manager icon

+Figure 3.5: Weight Manager icon +

+
+
+
+

+6.7 Visualizing adjacency +

+

After that, in the “Weights Manager” pop-up window, you can see that the characteristics of the weights file appear.

+
+ +Spatial weights table in _Weights Manager_

+Figure 3.6: Spatial weights table in Weights Manager +

+
+

In that window, you can also explore a neighbors’ histogram, connectivity map, and connectivity graph.

+
+ +Connectivity map

+Figure 6.1: Connectivity map +

+
+
+ +Connectivity graph

+Figure 6.2: Connectivity graph +

+
+
+ +Neighbours' histogram

+Figure 6.3: Neighbours’ histogram +

+
+

It’s interesting to see how the spatial algorithm works, and it’s also helpful to choose the correct type of adjacency to create appropriate spatial weights.

+
+
+

+6.8 Global Moran’s I test +

+

Now that a weights matrix has been created, we will use the Moran’s I tests to estimate the best district for selling houses. +This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. +Based on Moran’s test result, we can estimate spatial regression for different types of forecasts. +There are two basic types of Moran’s tests.

+

The global Moran’s test evaluates the presence of statistical dependence for the entire set of points, while the local test evaluates each point separately. +First of all, let’s calculate the univariate Moran’s test. +Click on the Space tab, choose the Univariate Moran’s I test, select the “medv” variable, and click OK.

+
+ +Univariate Moran's I menu

+Figure 3.8: Univariate Moran’s I menu +

+
+

The Moran’s test scatter plot appears.

+
+ +Univariate Moran's I scatter plot

+Figure 3.9: Univariate Moran’s I scatter plot +

+
+

Moran’s index ranges from -1 to 1. +Our result is 0.269, which means that there is a weak statistical relationship between the cost of housing at each point and the neighboring points. +We can also estimate a bivariate Moran’s test in same way. +Instead of using the univariate Moran’s test, click on the bivariate Moran’s test and select the medv and rm variables.

+
+ +Bivariate Moran's menu

+Figure 6.4: Bivariate Moran’s menu +

+
+
+ +Bivariate Moran's I scatter plot

+Figure 6.5: Bivariate Moran’s I scatter plot +

+
+

The spatial correlation between housing medium values and number of rooms is exist. +Now let’s explore in which areas of Boston will the relationship between variables be the greatest.

+
+
+

+6.9 Local Moran’s I test +

+

For that purpose we can calculate the Local Moran’s I test. +This test is much more interesting than the global test because we can create maps. +Let’s try to calculate the univariate Local Moran’s test. +Select the medv variable once again and click OK.

+
+ +Local Moran's I map menu

+Figure 3.11: Local Moran’s I map menu +

+
+

In the pop-up window, you can choose three types of graphics.

+

The first two are the cluster and significance maps that illustrate the spatial statistical differences. +Mark both maps and click OK.

+

The cluster map shows how strongly the cost of housing in neighboring locations is related to the cost of housing in each location, and the significance map shows how significant a statistical relationship is. +The smaller the p-value, the greater the significance.

+

Similarly, you can perform a local Moran’s test for two variables. +Just choose the medv and rm values in the pop-up window, and you will see a result.

+
+ +Cluster map

+Figure 6.6: Cluster map +

+
+
+ +Significance map

+Figure 6.7: Significance map +

+
+

The cluster map allows us to understand in which areas of the city housing with a big number of rooms can be sold at a higher price. +In the high-high and low-low areas houses with a small number of rooms are located. +It is not profitable to sell housing with a large number of rooms there.

+

Interesting to explore the high-low areas. +Houses with a small number of rooms are located there. +At the same time, there are houses with a large number of rooms around. +Increasing prices for such apartments will not have a repulsive effect. +It means that we need to choose a high-low areas to increase housing prices as a realtor.

+ +
+
+
+ +
+
+ +
+ +
+

"GeoDa course" was written by Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V.. It was last built on 2023-12-27.

+
+ +
+

This book was built by the bookdown R package.

+
+ +
+
+ + diff --git a/docs/spatial-statistics-in-geoda.-part-2.html b/docs/spatial-statistics-in-geoda.-part-2.html new file mode 100644 index 0000000..9036536 --- /dev/null +++ b/docs/spatial-statistics-in-geoda.-part-2.html @@ -0,0 +1,385 @@ + + + + + + +Chapter 7 Spatial statistics in GeoDa. Part 2 | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+7 Spatial statistics in GeoDa. Part 2 +

+
+

+7.1 Previous lection +

+

In the previous lesson you have learned why spatial dependence is important, also you have learned some basics including Moran’s Index. +There are two types of Moran’s statistics. First is global Moran’s test. This test allows us to assess the statistical relationship between the value of the indicator in each location and in neighboring locations. +Second is local Moran’s test. Using this method you can create maps which can illustrate the spatial statistical differences between variables. +In general, Moran’s Index is needed when you need to prove the importance of connection between two variables. +But also there are a lot of different methods to explore the data.

+
+
+

+7.2 Theme of the lesson +

+

In this lesson you will study the additional spatial statistics methods represented in GeoDa:

+
    +
  • Joint Count
  • +
  • Local Geary
  • +
  • Quantile LISA
  • +
  • Spatial Correlogram
  • +
  • Linear regression
  • +
+
+
+

+7.3 Contiguity and spatial weights +

+

Contiguity and spatial weights are the two things which you can use in the weight manager in the next cases.

+

In its simplest form, the spatial weights matrix expresses the existence of a neighbor relation as a binary relationship, with weights 1 and 0. Usually this matrix is very sparse with a lot of zeros in it.

+

Contiguity means that two spatial units share a common border of non-zero length. Operationally, we can further distinguish between a rook and a queen criterion of contiguity, in analogy to the moves allowed for the such-named pieces on a chess board.

+
+
+

+7.4 Joint count methods +

+
+

+7.4.1 Theoretical basis +

+

Joint Count method is a technique for processing discrete variables, especially for binary variables. It is used to identify clusters in binary variables by means of the local joint count statistics. The statistics consists of counting the joins that correspond to occurrences of value pair at neighboring locations. Mathematic representation of this method: +\[ +BB_i = x_i\sum_{j}{w_i w_j}x_j +\] +This equation means that Joint Count is a sum of neighbors of \(x_i\) which are have the same value that x. In conclusion, you can use these methods to determine if there is a spatial connection between events or they are distributed in the random way. +### Implementation in GeoDa +To create map using this method you have to create a weight matrix first: +1. Open the Weights Manager +2. Choose “Create” +3. Select an ID variable in your dataset +4. Choose type of contiguity +5. Choose variable as spatial weight +6. Save the weight data +In the end you will see similar picture:

+
+ +Weights Manager

+Figure 3.1: Weights Manager +

+
+

After creating the weight matrix you can make the map. The only available option is a significant map. +1. Open Local Joint Count in Space bar menu +2. Select the variable you want to explore

+
+ +Local Join Count Significance Map

+Figure 3.2: Local Join Count Significance Map +

+
+

This map represents a spatial significance of negative population growth in Chicago city, IL. It means that the regions colored in green have strong connection between their location and decreasing its population. The reason can be different, but this reason stronngly affects to them.

+
+
+
+

+7.5 Local Geary +

+
+

+7.5.1 Theoretical basis +

+

Local Geary is a method to find the spatial autocorrelation through dissimilarity of data. It means that small values of the statistics suggest positive spatial autocorrelation, whereas large values suggest negative spatial autocorrelation. It can be more precise that Local Moran test in some cases because of differences in attribute similarity.

+
+
+

+7.5.2 Implementation in GeoDa +

+

First, you need to prepare the weight matrix like in the previous step. Next step is to open “Local Geary” in Space bar menu and select the variable. +In spite of Joint Count method you can choose two options for the maps. First is a cluster map which is a representation of attribute dependencies. Second variant is a significance map like in the Joint Count method.

+
+ +Local Geary Cluster Map. Tuberculosis in Chicago

+Figure 3.3: Local Geary Cluster Map. Tuberculosis in Chicago +

+
+

The cluster map is a great way to show spatial dependencies connected with attributes. Theoretically there are five categories. +First category is a “Not Significant”. It means that there is no dependency between attribute and spatial component. Second category is a “High-High”. It this category there is a strong positive connection between attribute and location. The next category is a “Low-Low”. This category represents straight, but negative connection. It means that surrounding area has the similar low values of the attribute like this regions. The fourth category represents low significant straight connection. The last category is about negative connection between this region and surrounding area. +But what it means in the practical way? Map shown in the top represents the connection between location and tuberculosis spreading, but let’s imagine that it is a cost of the flat in condominium. In the areas with “High-High” category there are high prices both in the colored regions and surrounding area. In the “Low-Low” areas cost is low in the similar way. Despite of this places the areas with negative connection have a potential for a good deal. You need to estimate is this place has a lower price that in surrounding area or not. If it is you can save your money.

+
+ +Local Geary Significance Map. Tuberculosis in Chicago

+Figure 3.4: Local Geary Significance Map. Tuberculosis in Chicago +

+
+

The Significance map represents power of the connection between attributes and spatial location like in the Joint Count method.

+
+
+
+

+7.6 Quantile LISA +

+
+

+7.6.1 Theoretical basis +

+

Quantile LISA or quantile local spatial autocorrelation is a method to find spatial autocorrelation between two or multiple continuous variables. Linear association measured by Bivariate Local Moran suffers from the location problem. Quantile LISA added a spatial component for measuring correlations. More often it is used when the focus is on extremes of the distribution.

+
+
+

+7.6.2 Implementation in GeoDa +

+

First do the steps like in Joint Count and Local Geary methods with creation of spatial weights. Next you need to select the variables and quantiles for analysis.

+
+ +Selecting quantiles and number of quantiles

+Figure 3.5: Selecting quantiles and number of quantiles +

+
+

Let’s explore how extreme poverty is connected with teen pregnancy. Select the category and use the last quantile. In this case we will see the dependency between proportion of people with income less than 50% of povery minimum and number of teen pregnancies.

+
+ +Quantile LISA Significance Map. Connection between extreme povery and number of teenage pregnancies

+Figure 3.6: Quantile LISA Significance Map. Connection between extreme povery and number of teenage pregnancies +

+
+

Like in the previous methods we can make a significance map representing power of spatial correlation between attributes.

+
+
+
+

+7.7 Spatial correlogram +

+
+

+7.7.1 Theoretical basis +

+

A non-parametric spatial correlogram is an alternative measure of global spatial autocorrelation that does not rely on the specification of a spatial weights matrix. Instead, a local regression is fit to the covariances, or correlations computed for all pairs of observations as a function of the distance between them. The non-parametric correlogram is computed by means of a local regression on the pairwise correlations that fall within each distance bin. The number of bins determines the distance range of each bin. This range is the maximum distance divided by the number of bins. The more bins are chosen, the more fine-grained the correlogram will be

+
+
+

+7.7.2 Implementation in GeoDa +

+

First choose Spatial correlogram in space bar tools. Next choose the data. You will see the “Correlogram Parameters” menu.

+
+ +Selecting quantiles and number of quantiles

+Figure 3.7: Selecting quantiles and number of quantiles +

+
+

You should choose variable for analysis and number of beans first. Note that there is an option that it will be no spatial dependency between distance of the regions and attribute values.

+
+ +Correlogram between number of assaults and distance

+Figure 3.8: Correlogram between number of assaults and distance +

+
+

As you can see there is a little dependency between this two variables. It means that number of assaults decreases with increasing distance parameter between two regions. It can representate the fact that unfortunate districts are close to each other and they are located in the big distance from prosperous ones.

+
+
+
+

+7.8 Regression +

+
+

+7.8.1 Theoretical basis +

+

Regression analysis is a set of statistical processes for estimating the relationship between a dependent variable and one or more independent variables. In the standard regression parameters of the model are constant. It means that there is no difference in spatial dependence between variables. To solve this problem, you can use geographically weighted regression. In this method weights are defined for every location individually. In the mathematical point of view weight coefficient matrix is used where close points have higher influence rate than far ones.

+
+
+

+7.8.2 Implementation in GeoDa +

+
    +
  • Note that regression is in different menu than other spatial statistics tools
  • +
  • You need to select dependent and independent variables
  • +
  • You may add additional weights file
  • +
+
+ +Settings of the regression

+Figure 3.9: Settings of the regression +

+
+

After processing you will see the Regression Report.

+
+ +Regression Report

+Figure 3.10: Regression Report +

+
+

There are two key points in it. First: R-squared – statistical measure that determines the proportion of variance in the dependent variable that can be explained by the independent variable. Second: F-value – statistical measure where the null hypothesis is that all the regression coefficients are equal to zero. In this case regression can’t predict the model of connection between data.

+
+
+
+

+7.9 Conclusion +

+
    +
  • Use Joint Count methods if you need to process with binary data
  • +
  • Use Local Geary methods if you need to describe the contiguous data and find similarity and dissimilarity areas
  • +
  • Use Quantile LISA if you need to process contiguous data with multiple variable and find an autocorrelation
  • +
  • Use spatial correlogram if you need to find correlation between differences of variable and different distances
  • +
  • Use a regression to prove your concept
  • +
+
+
+

+7.10 Task +

+
    +
  • Explore the spatial correlation between poverty with cancer deaths per 100 000 people in Chicago region.
  • +
  • Use this dataset: https://geodacenter.github.io/data-and-lab/comarea_vars/ +
  • +
  • Use Pov200P as an independent variable and CancerAll as dependent variable
  • +
  • Try Local Geary and Quantile LISA to find autocorrelation and make map. In the end use regression tool to make a conclusion between their dependency
  • +
  • Describe the result which you get with significance maps and regression report
  • +
+
+
+
+ +
+
+ +
+ +
+

"GeoDa course" was written by Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V.. It was last built on 2023-12-27.

+
+ +
+

This book was built by the bookdown R package.

+
+ +
+
+ + diff --git a/docs/style.css b/docs/style.css new file mode 100644 index 0000000..f317b43 --- /dev/null +++ b/docs/style.css @@ -0,0 +1,14 @@ +p.caption { + color: #777; + margin-top: 10px; +} +p code { + white-space: inherit; +} +pre { + word-break: normal; + word-wrap: normal; +} +pre code { + white-space: inherit; +} diff --git a/docs/the-inroduction.html b/docs/the-inroduction.html new file mode 100644 index 0000000..3ea26d7 --- /dev/null +++ b/docs/the-inroduction.html @@ -0,0 +1,156 @@ + + + + + + +Chapter 2 The Inroduction | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+2 The Inroduction +

+
+

+2.1 The essence of maps +

+

Creating map is a useful way to take space into account in your research. +The common ways to explain why to do so are Tobler’s laws of geography:

+
+
    +
  • Everything is related to everything else, but near things are more related than distant things
  • +
  • The phenomenon external to an area of interest affects what goes on inside +— Waldo Tobler
    +
  • +
+
+

In fact, you shall not interpret these as strict laws of any kind. However it +is very useful to treat these statements as initial hypotheses for spatial data +analysis. In order to check whether any spatial pattern is or is not presented +in a phenomenon, you can apply different techniques. Exploratory data analysis +can be performed with spatial data, displaying a map is a way to visually evaluate +quantitative features of spatial distribution, spatial statistics is a set of +techniques to estimate qualitative features of spatial distribution. And our +course follows this order to undercover you exciting world of spatial data analysis.

+
    +
  • First lesson is a brief introduction to a domain
  • +
  • In the second lesson we will talk about creating plots with spatial data and GeoDa
  • +
  • The third is about creation of simple thematic maps with GeoDa
  • +
  • The last three lessons are about spatial statistics applications
  • +
+
+
+
+ +
+
+ +
+ +
+

"GeoDa course" was written by Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V.. It was last built on 2023-12-27.

+
+ +
+

This book was built by the bookdown R package.

+
+ +
+
+ + diff --git a/docs/thematic-maps-in-geoda.html b/docs/thematic-maps-in-geoda.html new file mode 100644 index 0000000..7612908 --- /dev/null +++ b/docs/thematic-maps-in-geoda.html @@ -0,0 +1,298 @@ + + + + + + +Chapter 4 Thematic maps in Geoda | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+4 Thematic maps in Geoda +

+

Our today’s lesson is about how to make simple thematic maps using GeoDa software. We will explore thematic mapping toolkit using Chicago Community Area dataset which has a large attribute table. It allows us to create a huge variety of thematic maps.

+
+ +Chicago Community Area dataset

+Figure 3.1: Chicago Community Area dataset +

+
+
+

+4.1 What is a thematic map? +

+

But first, what is a thematic map? Roughly speaking, a thematic map is a map about certain theme. It’s interesting to see some kind of geographical pattern of a particular subject matter that’s why we use such maps. The GeoDa allows us to create different kinds of a thematic maps. So, let’s focus on some of them. During the lesson, we will use the interface which is shown on the left part of the slide.

+
+ +Thematic maooing toolkit

+Figure 3.2: Thematic maooing toolkit +

+
+
+
+

+4.2 Control panel +

+

When the window opens, you will notice several icons at the top. That tools are used to select elements on the map, invert the selection, zoom in and zoom out. Also you can add the basemap. The tools details we will describe later.

+
+ +Control panel

+Figure 3.3: Control panel +

+
+
+
+

+4.3 Quantile map +

+

Now, let’s explore some mapping options. You can create a map using quantiles, dividing the entire data array into equal parts. You have the opportunity to choose the number of parts, ranging from two to ten.This kind of map is effective in accurately depicting the distribution of the indicator. By dividing it into equal intervals, we can easily identify the geographical patterns of the phenomenon’s distribution throughout the territory.

+
+ +Quantile map

+Figure 3.4: Quantile map +

+
+
+
+

+4.4 Percentile map +

+

Another possible choropleth is a percentile map, which enables the visualization of the percentage distribution of the variable by region.This map is suitable for displaying a non-uniform distribution.

+
+ +Percentile map

+Figure 3.5: Percentile map +

+
+
+
+

+4.5 Standard deviation map +

+

Another interesting map is the standard deviation map which shows the deviation of the variable in each area from the average for all areas. If you wish to present the deviation of values in each cell from the mean, then this map option can be utilized.

+
+ +Standard deviation map

+Figure 3.6: Standard deviation map +

+
+
+
+

+4.6 Unique values map and choosing a color +

+

Sometimes it’s important to create the unique values map. With this kind of map you can focus on the color customization options in detail. In previous examples we used a gradient scale filling. But it’s also necessary to customize color palette for optimal appearance. To do so, right-click on the color icon, select “Flip Color for Category” from the menu, and choose the color from the options.

+
+ +Unique values map and choosing a color

+Figure 3.7: Unique values map and choosing a color +

+
+
+
+

+4.7 Custom breaks with category editor +

+

Another helpful feature in GeoDa is a scale division using different methods. The methods are natural intervals and equal intervals. Also you can create your own custom division method adjusting such parameters as the number of intervals, a value, and a method.This option is useful if you want to selectively highlight specific value groups and indicate them on the map. This can assist the data user in establishing logical connections.

+
+ +Custom breaks with category editor

+Figure 3.8: Custom breaks with category editor +

+
+
+
+

+4.8 Bubble map (cartogram) +

+

You can create bubble map or cartogram with two variables. On picture on the right you can see that a circle size and a color visualize two different variables. All the previous maps have demonstrated the distribution of a single indicator. If you need to showcase the spatial relationship between two indicators, then this version of the map should be used.

+
+ +Bubble map (cartogram)

+Figure 3.9: Bubble map (cartogram) +

+
+
+
+

+4.9 Basemap +

+

In conclusion, it is important to note a big variety of available basemaps in the software. You can choose not only default maps and satellite images but also specify a path to other map server location.

+
+ +Basemap

+Figure 3.10: Basemap +

+
+
+
+

+4.10 Save and export +

+

To save your map, right-click on an empty space in the map window and select “Save Image As.” In the window that appears, you can adjust the map size and position of the legend.

+
+ +Save and export

+Figure 3.11: Save and export +

+
+
+
+

+4.11 Exercise +

+

As an exercise, you should create three different maps using the specified dataset. The first map is a quantile map with 6 intervals, the second map is a percentile map and the third one is a standard deviation map. Write 5 sentences about differences between the first two maps. Change the colors and select a basemap for the standard deviation map. Save all three maps in .png format.

+
+
+

+4.12 Cheat Sheet +

+
    +
  1. If you want to reflect 1 indicator: +
      +
    1. Use a quantile map if you want to display +a measure divided into equal intervals;
    2. +
    3. Use a percentile map if you want a different +division of the indicator;
    4. +
    5. If you wish to present the deviation of values in +each cell from the mean, then this map option +can be utilized
    6. +
    7. If you want to represent the deviation of values ​​ +in each map cell from the mean, use +a standard deviation map
    8. +
    9. You can use a unique values map if you want to +mark areas where the indicator values ​​are the same;
    10. +
    11. You can use other scale division options to +manipulate data and visualize it on a map.
    12. +
    +
  2. +
  3. If you need to demonstrate spatial relationships +between two indicators, then a cartogram should be used.
  4. +
+
+
+
+ +
+
+ +
+ +
+

"GeoDa course" was written by Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V.. It was last built on 2023-12-27.

+
+ +
+

This book was built by the bookdown R package.

+
+ +
+
+ + diff --git a/docs/working-with-graphics-in-geoda.html b/docs/working-with-graphics-in-geoda.html new file mode 100644 index 0000000..ecf09f6 --- /dev/null +++ b/docs/working-with-graphics-in-geoda.html @@ -0,0 +1,273 @@ + + + + + + +Chapter 3 Working with graphics in GeoDa | GeoDa course + + + + + + + + + + + + + + + + + +
+
+
+

+3 Working with graphics in GeoDa +

+
+

+3.1 Introduction +

+

Today we are going to get acquaintanced with creating graphics for various statistic datasets in GeoDa. This GIS has prepared datasets and today we’ll use one of them. We’re going to work with Boston Housing 1970s, which contains housing and neighborhood data for the city of Boston based on research from the 1970s-90s. This dataset is a point shapefile with 506 observations and 23 variables. To open this data you have to choose File>New and to choose Boston Home Sales from Sample Data. After that you’ll be able to see the spatial distribution of the parameter. In the bottom left you’ll see the information about the number of observations.

+
+ +Opening the dataset

+Figure 3.1: Opening the dataset +

+
+
+ +Boston Housing 1970s

+Figure 3.2: Boston Housing 1970s +

+
+
+
+

+3.2 Specific od data storage in GIS +

+

To understand what observations and variables stand for we have to find out some facts about the ways of storing data in GIS. In GIS each object in a dataset consists of 2 parts: geometric (you see it) and semantic (responsible for the property of the object and represented as a row in a table). So, the semantic part is a table, where each line is an object of a dataset and each column contains the characteristic of the object. It means that the number of observations is a number of objects (rows) and the number of variables stands for the number of object characteristics (columns).

+
+ +Storing data in GIS

+Figure 3.3: Storing data in GIS +

+
+
+
+

+3.3 Graphic types in GeoDa +

+

There’re 8 types of graphics in GeoDA: Histogram, Box Plot, Scatter Plot, Scatter Plot, Matrix, Bubble Chart, 3D Scatter Plot, Conditional Plot

+
+ +Types of graphics in GeoDa

+Figure 3.4: Types of graphics in GeoDa +

+
+
+

+3.3.1 Histogram +

+

Histogram shows the meanings of one variable for each chosen object. You have to push the histogram button on the control panel and to choose the variable you need. If you want to create histogram not for all objects, but for concrete ones, you have to choose them either from the table or from the map. In that case the histogram will show the meanings of the variable for all objects and for chosen ones. To open the table, you have to push the button on the control panel. To chose other colors for the histogram or to export it as an image, you have to click it with the right button and to choose the option you need. This works for all types of graphics in GeoDa.

+
+ +Creating Histogram in GeoDa

+Figure 3.5: Creating Histogram in GeoDa +

+
+
+
+

+3.3.2 Box plot +

+

Boxplots are created to represent the distribution of a numeric variable. The graphic reflects maximum and minimum values, median, first and last quantiles and p-values at the same time. To create boxplot, you also just have to push the button on the control panel and to choose the variable you need. Boxplot also has some numeric characteristics for easier interpretation.

+
+ +Creating Box plot in GeoDa

+Figure 3.6: Creating Box plot in GeoDa +

+
+
+
+

+3.3.3 Scatter plot +

+

Scatter plot is based on using Cartesian coordinates to display values for typically 2 variables for a dataset. There’re 3 types of Scatter plots in GeoDa. To create each of them, you still have to push a specified button on a control panel and create the variables. For classical scatter plot you’ll have to choose 2 of them. The 3D Scatter plot uses the 3-dimensial representation for 3 variables. Finally, the Scatter plot Matrix is a grid of scatter plots used to visualize bivariate relationships between combinations of variables. Here you can choose more than 2 or 3 variables for comparison, if you need. To create scatter plots, you also just have to push the button on the control panel and to choose the variable you need.

+
+ +Creating Scatterplot and Scatterplot Matrix in GeoDa

+Figure 3.7: Creating Scatterplot and Scatterplot Matrix in GeoDa +

+
+
+ +Creating 3D Scatterplot in GeoDa

+Figure 3.8: Creating 3D Scatterplot in GeoDa +

+
+
+
+

+3.3.4 Bubble Chart +

+

A bubble chart is a type of data visualization that uses circles (bubbles) to represent data points in a two-dimensional plot. It is similar to a scatter plot, but uses bubbles instead of dots. Typically, a bubble chart shows the values of three numeric variables, with each circle representing an observation and its position on the plot indicating the values of two other variables. To create bubble chart, you also have to push the button on the control panel and to choose the variable you need.

+
+ +Creating Bubble Chart in GeoDa

+Figure 3.9: Creating Bubble Chart in GeoDa +

+
+
+
+

+3.3.5 Parallel coordinates plot +

+

Parallel coordinates plot is a common way of visualizing and analyzing high-dimensional datasets. A point in n-dimensional space is represented as a polyline with vertices on the parallel axes and the position of the vertex corresponds to the coordinate of the point. To create it, you have to push the button on the control panel and to choose the variable you need.

+
+ +Creating Parallel coordinates plot in GeoDa

+Figure 3.10: Creating Parallel coordinates plot in GeoDa +

+
+
+
+

+3.3.6 Conditional plot +

+
    +
  • +Conditional plot consists of two variables conditional on the value of a third variable. You can create a map, a histogram, a scatter plot or a boxplot, using the button on a control panel. You’ll have to choose 3 variables and get 9 graphics, showing their dependencies.
  • +
+
+ +Creating a Conditional plot in GeoDa

+Figure 3.11: Creating a Conditional plot in GeoDa +

+
+
+
+
+

+3.4 Practical exercise +

+

To check yourself after this lesson you have to built 3 Graphics for the observations with the towno=27. +1. You have to create a histogram to analyze distances to Boston employment centers (dis); +2. You have to create a histogram to analyze per capita crime (crim) and fix in *.txt file the minimum, maximum, mean and median values of the variable; +3. You have to create a bubble chart to analyze the dependencies between such variables as age (x-axes), dis (y-axes), crim (bubble-size) and indus (bubble-color). +The result of your task must be represented by a txt-file with statistical parameters and 3 png-files with graphics.

+ +
+
+
+ +
+
+ +
+ +
+

"GeoDa course" was written by Baryshkin P., Volokh E., Mikhailova M., Pinigin G., Romakh E., Sokhrannykh V.. It was last built on 2023-12-27.

+
+ +
+

This book was built by the bookdown R package.

+
+ +
+
+ +